如何解决pytest-dependency 在我的测试中不起作用
import pytest
class TestXdist2():
@pytest.mark.dependency(name="aa")
def test_t1(self):
print("\ntest_1")
assert True
import pytest
import sys,os
sys.path.append(os.getcwd())
from testcases.test_xdist_2 import TestXdist2
class TestXdist1():
def setup_class(self):
self.x = TestXdist2()
@pytest.mark.dependency(depends=["aa"],scope="module")
def test_t2(self):
print("\ntest_t2")
assert 1==1
if __name__ == "__main__":
pytest.main(["-s","-v",f"{os.path.abspath('testcases')}/test_xdist_1.py"])
当我运行senond文件时,我认为应该先运行测试用例“test_t1”,然后再运行“test_t2”,但结果是这样,“test_t2”被跳过了,我不知道为什么,
PS D:\gitProjects\selenium_pytest_demo> & D:/python38/python.exe d:/gitProjects/selenium_pytest_demo/testcases/test_xdist_1.py
Test session starts (platform: win32,Python 3.8.7,pytest 6.2.2,pytest-sugar 0.9.4)
cachedir: .pytest_cache
Metadata: {'Python': '3.8.7rc1','Platform': 'Windows-10-10.0.18362-SP0','Packages': {'pytest': '6.2.2','py': '1.10.0','pluggy': '0.13.1'},'Plugins': {'allure-pytest': '2.8.35','dependency': '0.5.1','forked': '1.3.0','html': '3.1.1','Metadata': '1.11.0','rerunfailures': '9.1.1','sugar': '0.9.4','xdist': '2.2.1'},'JAVA_HOME': 'D:\\Java\\jdk-15.0.1'}
rootdir: D:\gitProjects\selenium_pytest_demo,configfile: pytest.ini
plugins: allure-pytest-2.8.35,dependency-0.5.1,forked-1.3.0,html-3.1.1,Metadata-1.11.0,rerunfailures-9.1.1,sugar-0.9.4,xdist-2.2.1
collecting ...
testcases\test_xdist_1.py::TestXdist1.test_t2 s 50% █████
test_1
testcases\test_xdist_2.py::TestXdist2.test_t1 ✓ 100% ██████████
Results (0.04s):
1 passed
1 skipped
解决方法
这是预期的行为 - pytest-dependency
不会对测试用例进行排序,它仅在它们所依赖的测试用例被跳过或失败时才跳过测试用例。存在一个 PR 会改变它,但不会合并
在此之前,您可以使用 pytest-order。如果您只需要排序,可以使用 relative markers。如果您还想在它们所依赖的测试失败时跳过测试,您可以像以前一样使用 pytest-dependency
,但使用 pytest-order
选项 --order-dependencies 额外订购测试。
免责声明:
我是 pytest-order(它是 pytest-ordering 的一个分支)的作者。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。