【发布时间】:2015-03-13 07:56:28
【问题描述】:
在单元测试中,我可以在一个类中设置变量,然后这个类的方法可以选择它想要使用的任何变量...
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中,我在conftest.py中创建了一个fixture,而不是在unittest中创建了一个类,像这样...
@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。如果我在这些不同的文件之间有一些共享变量,我将如何声明它们?只需在所有这些测试文件所在的目录中创建一个文件 calle variables.py 并在需要时进行导入?这样我可以将所有数据单独保存。
我的印象是 pytest 不鼓励使用类来组织你的函数吗?我在网上阅读的每个示例,似乎都只使用了一些带有固定装置的功能。 pytest中定义类和方法以及组织测试的配置是什么?
我有一个测试场景,我必须将一个函数的结果用于另一个函数。使用 pytest,我有一个断言位于函数末尾而不是返回,因此我将无法将此函数用作固定装置。我该如何做到这一点?我知道我的一个测试依赖于另一个测试不是一个好习惯,但有解决方法吗?
提前感谢您的回答。
【问题讨论】:
标签: python pytest unit-testing