Python 我希望一个失败的测试是好的
我有一个测试失败了,但我希望它会失败,我希望Python 我希望一个失败的测试是好的,python,pytest,Python,Pytest,我有一个测试失败了,但我希望它会失败,我希望pytest说它通过了。我该怎么做 例如,我有一个最小值=30,最大值=40 以下是我正在做的: @pytest.mark.parametrize( "minimum, maximum, expected_min, expected_max", [ (13, 15, 34, 45), (30, 40, 30, 40), ("sd", 3, 34, 45),
pytest
说它通过了。我该怎么做
例如,我有一个最小值=30,最大值=40
以下是我正在做的:
@pytest.mark.parametrize(
"minimum, maximum, expected_min, expected_max", [
(13, 15, 34, 45),
(30, 40, 30, 40),
("sd", 3, 34, 45),
])
我收到:
- 失败(断言错误)
- 通过
- 失败(断言错误)
如果第一个和第三个输入是非法的,你应该创建一个不同的测试用例,它测试代码是如何处理非法输入的。
根据你的用例使用一个实际的例子,考虑下面的代码。我们将原始测试数据集分为两组:我们期望通过的测试数据组和我们期望失败的测试数据组。像这样的单元测试应该单独测试一种情况,使每个测试用例更易于编写和理解import pytest
class TestMinMax:
@pytest.mark.parametrize(
"minimum, maximum, expected_min, expected_max", [
(30, 40, 30, 40),
])
def test_valid_examples(self, minimum, maximum, expected_min, expected_max):
assert minimum == expected_min
assert maximum == expected_max
@pytest.mark.parametrize(
"minimum, maximum, expected_min, expected_max", [
(13, 15, 34, 45),
("sd", 3, 34, 45),
])
def test_invalid_examples(self, minimum, maximum, expected_min, expected_max):
with pytest.raises(AssertionError):
assert minimum == expected_min
assert maximum == expected_max
if __name__ == '__main__':
pytest.main(args=[__file__])
输出
=================================================测试会话开始=============================
平台win32——Python 3.5.2、pytest-3.0.1、py-1.4.31、pluggy-0.3.1
rootdir:C:\Users\\.PyCharmCE2016.3\config\scratches,文件:
收集了3个项目
刮擦3.py。。。
=================================================3在0.02秒内通过===========================
@Tagc:问题是我会得到相反的结果。测试通过,失败,通过。是的,你应该将输入分成两组(“有效”和“无效”案例),并按照弗罗洛的建议分别测试每组。