尝试重构一些旧的可怕测试代码并使用Pytest进行重构。测试看起来像这样:
Test/
Tests_a/
test_a_foo.py
test_a_bar.py
test_a_baz.py
Tests_b/
test_b_1.py
test_b_2.py
test_b_3.py
我们想分别运行Tests_a和Tests_b,所以我可以调用pytest Tests_a和pytest Tests_b。
我们需要生成一些值,并在大多数测试中使用过。
common_value1 = "something" + random()
common_value2 = "something2" + random()
...
现在我正在通过在conftest.py中将每个变量作为自己的夹具来实现。所以我有
@pytest.fixture(scope="session")
def common_value1():
return "something" + random()
到目前为止,这似乎有效,但我想知道是否有更好的方法?我们有很多这些常见的值,因此用这些变量来填充这个变量很烦人。
`
`
另一个问题是我有一些常见的实用功能,我想在测试的根级别突破。我遇到的问题是其中一些实用程序需要这些常用值。非测试功能是否可以获得灯具?
所以我util.py
有类似的东西:
def do_common_thing(passed_in_value):
print(common_value1 + passed_in_value)
获取common_value1的正确方法是什么?我已经尝试将此函数转换为一个夹具并将common_value1作为参数,但这似乎没有效果。我让它工作的唯一方法是让测试本身得到common_value1并将其传递给do_common_thing(),但是当有很多这些值时,这尤其令人讨厌。