在单元测试中,我可以在一个类中使用setUp
方法设置变量,然后该类的方法可以选择使用任何它想要使用的变量...
在unittest中,我可以在一个类中通过使用setUp
方法来设定变量,然后该类中的方法可以选择使用其中任何一个变量...
class test_class(unittest.TestCase):
def setUp(self):
self.varA = 1
self.varB = 2
self.varC = 3
self.modified_varA = 2
def test_1(self):
do_something_with_self.varA, self.varB
def test_2(self):
do_something_with_self_modified_varA, self.varC
因此,在unittest中,很容易将一堆测试放在一个类中,并为不同方法使用许多不同的变量(varA
和varB
)。在pytest中,我创建了一个fixture,而不是像unittest中的class那样,放在conftest.py
中,就像这样...
@pytest.fixture(scope="module")
def input1():
varA = 1
varB = 2
return varA, varB
@pytest.fixture(scope="module")
def input2():
varA = 2
varC = 3
return varA, varC
我将这个input1和input2传递给不同文件中的函数(比如说test_this.py)的两个不同函数。以下是基于上述信息的问题...
由于我不能像在conftest.py中导入那样声明局部变量,因此是否有更好的方法在此处声明不同的变量,以便可以在test_this.py中的不同函数中使用?在我的实际测试中,我有五种不同的变量配置,定义许多不同的固定装置在conftest.py中,并在test_this.py中的五个不同函数中使用它们作为函数参数听起来很痛苦。我宁愿回到unittest类结构,定义我的变量并挑选我想要的。
我应该只在test_this.py中声明全局变量,并按照自己的方式在函数中使用它们吗?这似乎不太符合Pythonic。这些变量仅由此文件中的函数使用。
假设我还有test_that.py和test_them.py。如果这些不同文件之间有一些共享变量,我该如何声明它们?只需在所有这些测试文件所在的目录中创建一个名为variables.py的文件,并在需要时进行导入吗?这样我就可以将所有数据保存在单独的文件中。
是不是pytest不鼓励使用类来组织函数?我在网上读到的每个例子都似乎只使用了一堆带有固定装置的函数。在pytest中定义类和方法以及组织测试的配置是什么?
我有一个测试场景,需要将一个函数的结果用于另一个函数。在pytest中,我有一个断言位于函数末尾而不是返回值,因此我将无法将此函数用作fixture。我该如何处理这个问题?我知道这不是一个好的实践,我的一个测试依赖于另一个测试,但是否有解决方法?