网站备案格式,自己做的视频网站如何赚钱吗,网络推广方式有哪几种,wordpress大学主题1.3运行pytest可以指定目录和文件#xff0c;如果不指定#xff0c;pytest会搜索当前目录及其子目录中以test_开头或以_test结尾得测试函数。我们把pytest搜索测试文件和测试用例的过程称为测试搜索#xff08;test discovery#xff09;。只要遵循pytest的命名规则#xff0… 运行pytest可以指定目录和文件如果不指定pytest会搜索当前目录及其子目录中以test_开头或以_test结尾得测试函数。我们把pytest搜索测试文件和测试用例的过程称为测试搜索test discovery。只要遵循pytest的命名规则pytest就能自动搜索所有待执行的测试用例。所有的包必须要有init.py文件(在使用各种编辑器时会自动生成)1、测试文件命名规则test_xxx.py或xxx_test.py2、方法、测试函数命名规则test_xxx3、测试类命名规则Testxxx并且不能带有 init 方法Pytest参数选项在脚本中和命令行用法详解一-k选项 -K EXPRESSION使用表达式指定某个关键字的测试用例如果某测试名是唯一的或多个测试名的前缀或后缀相同可快速匹配匹配范围是全局相同目录或下层目录所有包名、文件名、类名、函数名为变量文件名、类名、函数名必须是test_开头或_test结尾的。pytest.main([-k,关键字])
关键字包含于或等于文件名、类名、函数名多个关键字之间用and、or、not连接测试代码如下chengzi\test_04.pyimport pytestclass TestClass(object):def test_one(self):assert 2 1def test_two(self):assert 2 2def test_two2(self):assert 2 2
执行匹配包名运行了3条用例pytest.main([-v,-k,chengzi])if __name__ __main__:pytest.main([-v,-k,chengzi])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/untitled/chengzi/test_04.pytest session starts
platform win32 -- Python 3.5.2, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- C:\Program Files\Python35\python.exe
cachedir: .pytest_cache
metadata: {Packages: {pluggy: 0.13.1, py: 1.9.0, pytest: 6.1.1}, Platform: Windows-10-10.0.18362-SP0, JAVA_HOME: C:\\Program Files\\Java\\jdk1.8.0_101, Python: 3.5.2, Plugins: {allure-pytest: 2.8.18, metadata: 1.8.0, rerunfailures: 9.1.1, html: 1.22.0}}
rootdir: C:\Users\wangli\PycharmProjects\untitled\chengzi
plugins: allure-pytest-2.8.18, html-1.22.0, metadata-1.8.0, rerunfailures-9.1.1
collecting ... collected 3 itemstest_04.py::TestClass::test_one FAILED [ 33%]
test_04.py::TestClass::test_two PASSED [ 66%]
test_04.py::TestClass::test_two2 PASSED [100%] FAILURES
_____________________________ TestClass.test_one ______________________________self chengzi.test_04.TestClass object at 0x000001F27E537B70def test_one(self):assert 2 1
E assert 2 1
E 2
E -1test_04.py:5: AssertionErrorshort test summary info
FAILED test_04.py::TestClass::test_one - assert 2 11 failed, 2 passed in 0.63s Process finished with exit code 0
执行匹配文件名运行了3条用例pytest.main([-v,-k,test_04.py])if __name__ __main__:pytest.main([-v,-k,test_04.py])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/untitled/chengzi/test_04.pytest session starts
platform win32 -- Python 3.5.2, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- C:\Program Files\Python35\python.exe
cachedir: .pytest_cache
metadata: {Platform: Windows-10-10.0.18362-SP0, Python: 3.5.2, Packages: {py: 1.9.0, pluggy: 0.13.1, pytest: 6.1.1}, JAVA_HOME: C:\\Program Files\\Java\\jdk1.8.0_101, Plugins: {rerunfailures: 9.1.1, html: 1.22.0, allure-pytest: 2.8.18, metadata: 1.8.0}}
rootdir: C:\Users\wangli\PycharmProjects\untitled\chengzi
plugins: allure-pytest-2.8.18, html-1.22.0, metadata-1.8.0, rerunfailures-9.1.1
collecting ... collected 3 itemstest_04.py::TestClass::test_one FAILED [ 33%]
test_04.py::TestClass::test_two PASSED [ 66%]
test_04.py::TestClass::test_two2 PASSED [100%] FAILURES
_____________________________ TestClass.test_one ______________________________self chengzi.test_04.TestClass object at 0x000002031D345588def test_one(self):assert 2 1
E assert 2 1
E 2
E -1test_04.py:6: AssertionErrorshort test summary info
FAILED test_04.py::TestClass::test_one - assert 2 11 failed, 2 passed in 0.48s Process finished with exit code 0
执行匹配类名运行了3条用例pytest.main([-v,-k,Class])if __name__ __main__:pytest.main([-v,-k,Class])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/untitled/chengzi/test_04.pytest session starts
platform win32 -- Python 3.5.2, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- C:\Program Files\Python35\python.exe
cachedir: .pytest_cache
metadata: {Plugins: {html: 1.22.0, rerunfailures: 9.1.1, metadata: 1.8.0, allure-pytest: 2.8.18}, Packages: {pluggy: 0.13.1, py: 1.9.0, pytest: 6.1.1}, JAVA_HOME: C:\\Program Files\\Java\\jdk1.8.0_101, Python: 3.5.2, Platform: Windows-10-10.0.18362-SP0}
rootdir: C:\Users\wangli\PycharmProjects\untitled\chengzi
plugins: allure-pytest-2.8.18, html-1.22.0, metadata-1.8.0, rerunfailures-9.1.1
collecting ... collected 3 itemstest_04.py::TestClass::test_one FAILED [ 33%]
test_04.py::TestClass::test_two PASSED [ 66%]
test_04.py::TestClass::test_two2 PASSED [100%] FAILURES
_____________________________ TestClass.test_one ______________________________self chengzi.test_04.TestClass object at 0x0000023ED5C68B00def test_one(self):assert 2 1
E assert 2 1
E 2
E -1test_04.py:6: AssertionErrorshort test summary info
FAILED test_04.py::TestClass::test_one - assert 2 11 failed, 2 passed in 0.21s Process finished with exit code 0
执行匹配函数名函数名中含test且含two的运行了2条用例pytest.main([-v,-k,test and two])if __name__ __main__:pytest.main([-v,-k,test and two])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/untitled/chengzi/test_04.pytest session starts
platform win32 -- Python 3.5.2, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- C:\Program Files\Python35\python.exe
cachedir: .pytest_cache
metadata: {Platform: Windows-10-10.0.18362-SP0, JAVA_HOME: C:\\Program Files\\Java\\jdk1.8.0_101, Plugins: {rerunfailures: 9.1.1, html: 1.22.0, allure-pytest: 2.8.18, metadata: 1.8.0}, Packages: {pluggy: 0.13.1, py: 1.9.0, pytest: 6.1.1}, Python: 3.5.2}
rootdir: C:\Users\wangli\PycharmProjects\untitled\chengzi
plugins: allure-pytest-2.8.18, html-1.22.0, metadata-1.8.0, rerunfailures-9.1.1
collecting ... collected 3 items / 1 deselected / 2 selectedtest_04.py::TestClass::test_two PASSED [ 50%]
test_04.py::TestClass::test_two2 PASSED [100%] 2 passed, 1 deselected in 0.11s Process finished with exit code 0-m选项 -m MARKEXPR标记marker用于标记测试并分组以便快速选中并运行匹配运行所有标记了装饰器pytest.mark.marker的类或方法的测试用例标记名可自行定义如果标记名为run_all,可使用pytest.mark.run_all装饰类或函数来做标记匹配范围是全局相同目录或下层目录所有类装饰器的标记名、函数装饰器的标记名文件名、类名、函数名必须是test_开头或_test结尾的。pytest.main([-v,-m,关键字])
关键字等于类装饰器或函装饰器pytest.mark.标记名里的标记名多个关键字之间用and、or、not连接
测试代码目录测试代码chengzi\test_01.py
import pytestclass Test_Class(object):def test_one(self):assert 2 1pytest.mark.run_twodef testtwo(self):assert 2 2def test_two2(self):assert 2 2if __name__ __main__:pytest.main([-v,-m,run_one or run_all])juzi\test_02.py
pytest.mark.run_all
class TestClass(object):def test_one(self):assert 2 1def test_two(self):assert 2 2def test_two2(self):assert 2 2if __name__ __main__:pytest.main([-v,-m,run_one or run_all])import pytesttest_03.py
class TestClass(object):pytest.mark.run_onedef test_one(self):assert 2 1def test_two(self):assert 2 2def test_two2(self):assert 2 2if __name__ __main__:pytest.main([-v,-m,run_one or run_all])test_04.py
class TestClass(object):def test_onqq(self):assert 2 1def test_two(self):assert 2 2pytest.mark.two2def test_two2(self):assert 2 2if __name__ __main__:pytest.main([-v,-m,run_one or run_all])
执行匹配类或函数装饰器里标记名为run_one或run_all的测试用例可以看到匹配运行了4条用例pytest.main([-v,-m,run_one or run_all])if __name__ __main__:pytest.main([-v,-m,run_one or run_all])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/untitled/test_04.pytest session starts
platform win32 -- Python 3.5.2, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- C:\Program Files\Python35\python.exe
cachedir: .pytest_cache
metadata: {JAVA_HOME: C:\\Program Files\\Java\\jdk1.8.0_101, Platform: Windows-10-10.0.18362-SP0, Python: 3.5.2, Plugins: {allure-pytest: 2.8.18, html: 1.22.0, metadata: 1.8.0, rerunfailures: 9.1.1}, Packages: {pytest: 6.1.1, pluggy: 0.13.1, py: 1.9.0}}
rootdir: C:\Users\wangli\PycharmProjects\untitled
plugins: allure-pytest-2.8.18, html-1.22.0, metadata-1.8.0, rerunfailures-9.1.1
collecting ... collected 12 items / 8 deselected / 4 selectedtest_03.py::TestClass::test_one FAILED [ 25%]
juzi/test_02.py::TestClass::test_one FAILED [ 50%]
juzi/test_02.py::TestClass::test_two PASSED [ 75%]
juzi/test_02.py::TestClass::test_two2 PASSED [100%] FAILURES
_____________________________ TestClass.test_one ______________________________self test_03.TestClass object at 0x00000232EDB1BF60pytest.mark.run_onedef test_one(self):assert 2 1
E assert 2 1
E 2
E -1test_03.py:7: AssertionError
_____________________________ TestClass.test_one ______________________________self juzi.test_02.TestClass object at 0x00000232EDB0B080def test_one(self):assert 2 1
E assert 2 1
E 2
E -1juzi\test_02.py:6: AssertionErrorwarnings summary
test_03.py:5C:\Users\wangli\PycharmProjects\untitled\test_03.py:5: PytestUnknownMarkWarning: Unknown pytest.mark.run_one - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.htmlpytest.mark.run_onetest_04.py:12C:\Users\wangli\PycharmProjects\untitled\test_04.py:12: PytestUnknownMarkWarning: Unknown pytest.mark.two2 - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.htmlpytest.mark.two2chengzi\test_01.py:8C:\Users\wangli\PycharmProjects\untitled\chengzi\test_01.py:8: PytestUnknownMarkWarning: Unknown pytest.mark.run_two - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.htmlpytest.mark.run_twojuzi\test_02.py:3C:\Users\wangli\PycharmProjects\untitled\juzi\test_02.py:3: PytestUnknownMarkWarning: Unknown pytest.mark.run_all - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.htmlpytest.mark.run_all-- Docs: https://docs.pytest.org/en/stable/warnings.htmlshort test summary info
FAILED test_03.py::TestClass::test_one - assert 2 1
FAILED juzi/test_02.py::TestClass::test_one - assert 2 12 failed, 2 passed, 8 deselected, 4 warnings in 0.24s Process finished with exit code 0
-V--verbose选项输出更加详细的信息比如用例所在的包、py文件、类名及用例名称等测试的名字和结果都会显示出来最明显区别就是每个文件中的测试用例都会占一行先前是每个文件占一行pytest.main([-v])-s选项允许终端在测试运行时输出用例中的调式信息包括任何符合标准的输出流信息比如print的打印信息等。pytest.main([-s])测试代码test-04.py
import pytestclass TestClass(object):def test_one(self):print(this is test_one)assert 2 1def test_two(self):print(this is test_two)assert 2 2pytest.mark.two2def test_two2(self):print(this is test_two2)assert 2 2if __name__ __main__:pytest.main([-s])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/untitled/test_04.pytest session starts
platform win32 -- Python 3.5.2, pytest-6.1.1, py-1.9.0, pluggy-0.13.1
rootdir: C:\Users\wangli\PycharmProjects\untitled
plugins: allure-pytest-2.8.18, html-1.22.0, metadata-1.8.0, rerunfailures-9.1.1
111
collected 12 itemstest_03.py F..
test_04.py this is test_one
Fthis is test_two
.this is test_two2
.
chengzi\test_01.py F..
juzi\test_02.py F..
-x选项debug调试时我们希望遇到断言失败时立即全局停止这时就可以用到-xpytest.main([-x,test_04.py])测试代码如下#设置用例1和用例3断言成功断言2失败
#执行后用例1执行了用例2执行断言失败脚本停止用例3没有继续执行
import pytestclass TestClass(object):def test_one(self):print(this is test_one)assert 2 2def test_two(self):print(this is test_two)assert 2 1def test_two2(self):print(this is test_two2)assert 2 2if __name__ __main__:pytest.main([-x,test_04.py])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/untitled/test_04.pytest session starts
platform win32 -- Python 3.5.2, pytest-6.1.1, py-1.9.0, pluggy-0.13.1
rootdir: C:\Users\wangli\PycharmProjects\untitled
plugins: allure-pytest-2.8.18, html-1.22.0, metadata-1.8.0, rerunfailures-9.1.1
collected 3 itemstest_04.py .F FAILURES
_____________________________ TestClass.test_two ______________________________self test_04.TestClass object at 0x000001465DA2D780def test_two(self):print(this is test_two)assert 2 1
E assert 2 1test_04.py:11: AssertionError
---------------------------- Captured stdout call -----------------------------
this is test_twoshort test summary info
FAILED test_04.py::TestClass::test_two - assert 2 1
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!1 failed, 1 passed in 0.88s Process finished with exit code 0
--maxfailnum与-x选项类似测试用例达到指定失败次数就会全局停止不在执行假设允许pytest失败2次后停止则可以使用--maxfail2明确指定可失败次数。pytest.main([--maxfail2,test_04.py])测试代码如下#设置用例1和用例2断言失败用例3断言成功
#使用pytest.main([--maxfail2,test_04.py])
#执行了用例1和用例2达到2次失败全局停止未执行用例3
test_04.py
import pytestclass TestClass(object):def test_one(self):print(this is test_one)assert 2 1def test_two(self):print(this is test_two)assert 2 1pytest.mark.two2def test_two2(self):print(this is test_two2)assert 2 2if __name__ __main__:pytest.main([--maxfail2,test_04.py])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/untitled/test_04.pytest session starts
platform win32 -- Python 3.5.2, pytest-6.1.1, py-1.9.0, pluggy-0.13.1
rootdir: C:\Users\wangli\PycharmProjects\untitled
plugins: allure-pytest-2.8.18, html-1.22.0, metadata-1.8.0, rerunfailures-9.1.1
collected 3 itemstest_04.py FF FAILURES
_____________________________ TestClass.test_one ______________________________self test_04.TestClass object at 0x000001ACC521D5F8def test_one(self):print(this is test_one)assert 2 1
E assert 2 1test_04.py:7: AssertionError
---------------------------- Captured stdout call -----------------------------
this is test_one
_____________________________ TestClass.test_two ______________________________self test_04.TestClass object at 0x000001ACC521A668def test_two(self):print(this is test_two)assert 2 1
E assert 2 1test_04.py:11: AssertionError
---------------------------- Captured stdout call -----------------------------
this is test_twowarnings summary
test_04.py:13C:\Users\wangli\PycharmProjects\untitled\test_04.py:13: PytestUnknownMarkWarning: Unknown pytest.mark.two2 - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.htmlpytest.mark.two2-- Docs: https://docs.pytest.org/en/stable/warnings.htmlshort test summary info
FAILED test_04.py::TestClass::test_one - assert 2 1
FAILED test_04.py::TestClass::test_two - assert 2 1
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 2 failures !!!!!!!!!!!!!!!!!!!!!!!!!!2 failed, 1 warning in 0.17s Process finished with exit code 0--lf--last-failed选项执行上次断言失败的用例A当用例A一直是断言失败运行脚本一直只执行用例A当用例A断言成功后没有失败的用例了会执行全部用例如果又有断言失败的用例下次会执行运行失败的用例运行脚本会执行上次断言失败的用例没有失败用例会执行所有用例pytest.main([--lf,test_04.py])#设置test_two用例断言失败运行j脚本后只跑了test_two用例
import pytest
class TestClass(object):def test_one(self):print(this is test_one)assert 2 2def test_two(self):print(this is test_two)assert 2 1def test_two2(self):print(this is test_two2)assert 2 2if __name__ __main__:pytest.main([--lf,test_04.py])collected 3 items / 2 deselected / 1 selected
run-last-failure: rerun previous 1 failuretest_04.py F [100%] FAILURES
_____________________________ TestClass.test_two ______________________________self test_04.TestClass object at 0x0000028C5FB3A198def test_two(self):print(this is test_two)assert 2 1
E assert 2 1test_04.py:11: AssertionError
---------------------------- Captured stdout call -----------------------------
this is test_twoshort test summary info
FAILED test_04.py::TestClass::test_two - assert 2 11 failed, 2 deselected in 0.15s Process finished with exit code 0#把用例test_two改成断言正确的再次运行脚本仍执行了test_two用例发现test_two
# 用例断言成功了
import pytest
class TestClass(object):def test_one(self):print(this is test_one)assert 2 2def test_two(self):print(this is test_two)assert 2 2def test_two2(self):print(this is test_two2)assert 2 2if __name__ __main__:pytest.main([--lf,test_04.py])collected 3 items / 2 deselected / 1 selected
run-last-failure: rerun previous 1 failuretest_04.py . [100%] 1 passed, 2 deselected in 0.09s Process finished with exit code 0#再次运行脚本执行了全部用例
import pytest
class TestClass(object):def test_one(self):print(this is test_one)assert 2 2def test_two(self):print(this is test_two)assert 2 2def test_two2(self):print(this is test_two2)assert 2 2if __name__ __main__:pytest.main([--lf,test_04.py])collected 3 items
run-last-failure: 13 known failures not in selected teststest_04.py ... [100%] 3 passed in 0.05s Process finished with exit code 0
--ff--failed-first选项--ff选项运行脚本会优先执行上次断言失败的用例再依次执行其他用例直至运行脚本上次断言失败的用例这次变为断言成功下次再运行脚本才会按正常用例顺序依次执行与--lf选项作用基本相同不同之处--ff会运行剩下 的测试用例。pytest.main([-s,--ff,test_04.py])# 设置test_two2断言失败首次运行脚本未优先执行test_two2
# 结果test_two2断言失败
import pytest
class TestClass(object):def test_one(self):print(this is test_one)assert 2 2def test_two(self):print(this is test_two)assert 2 2def test_two2(self):print(this is test_two2)assert 2 1if __name__ __main__:pytest.main([-s,--ff,test_04.py])collected 3 items
run-last-failure: 13 known failures not in selected teststest_04.py this is test_one
.this is test_two
.this is test_two2
F FAILURES
_____________________________ TestClass.test_two2 _____________________________self test_04.TestClass object at 0x000001A124621CF8def test_two2(self):print(this is test_two2)assert 2 1
E assert 2 1test_04.py:15: AssertionErrorshort test summary info
FAILED test_04.py::TestClass::test_two2 - assert 2 11 failed, 2 passed in 0.17s Process finished with exit code 0# 脚本不变再次运行一次发现优先执行了上次断言失败的用例test_two2
# 再按顺序依次执行结果test_two2断言失败
collected 3 items
run-last-failure: rerun previous 1 failure firsttest_04.py this is test_two2
Fthis is test_one
.this is test_two
. FAILURES
_____________________________ TestClass.test_two2 _____________________________self test_04.TestClass object at 0x000002C5D0F03668def test_two2(self):print(this is test_two2)assert 2 1
E assert 2 1test_04.py:15: AssertionErrorshort test summary info
FAILED test_04.py::TestClass::test_two2 - assert 2 11 failed, 2 passed in 0.10s Process finished with exit code 0# test_two2用例改成断言成功再次执行脚本发现还是优先执行了上次断言失败的用例test_two2
# 用例再按顺序依次执行结果test_two2断言成功def test_two2(self):print(this is test_two2)assert 2 2collected 3 items
run-last-failure: rerun previous 1 failure firsttest_04.py this is test_two2
.this is test_one
.this is test_two
. 3 passed in 0.07s Process finished with exit code 0# 脚本不变再运行依次脚本发现未优先执行test_two2用例因为上次结果
# 没有断言失败的所有不会优先执行正常依次执行collected 3 items
run-last-failure: 13 known failures not in selected teststest_04.py this is test_one
.this is test_two
.this is test_two2
. 3 passed in 0.03s Process finished with exit code 0--tbstyle选项捕捉到失败时输出信息的显示方式某个测试用例失败后pytest会列举出失败信息包括失败在哪一行、是什么失败、怎么失败的此过程称“信息回溯”它对找到问题很有帮助但有时也会对多余的信息感到厌烦这时--tbstyle选项就有用武之地了style类型有short、line、no。short模式仅输出assert的一行以及系统判定内容不显示上下文line模式只使用一行输出显示所有的错误信息no模式则直接屏蔽全部回溯信息pytest.main([--tbno,test_04.py])屏蔽全部回溯信息collected 3 itemstest_04.py ..F [100%] short test summary info
FAILED test_04.py::TestClass::test_two2 - assert 2 11 failed, 2 passed in 0.09s
pytest.main([--tbline,test_04.py])告诉我们错误的位置collected 3 itemstest_04.py ..F [100%] FAILURES
C:\Users\wangli\PycharmProjects\untitled\test_04.py:15: assert 2 1short test summary info
FAILED test_04.py::TestClass::test_two2 - assert 2 11 failed, 2 passed in 0.19s Process finished with exit code 0
pytest.main([--tbshort,test_04.py])显示回溯信息比前面两种都详细collected 3 itemstest_04.py ..F [100%] FAILURES
_____________________________ TestClass.test_two2 _____________________________
test_04.py:15: in test_two2assert 2 1
E assert 2 1
---------------------------- Captured stdout call -----------------------------
this is test_two2short test summary info
FAILED test_04.py::TestClass::test_two2 - assert 2 11 failed, 2 passed in 0.42s Process finished with exit code 0
pytest.main([--tblong,test_04.py])输出最详细的回溯信息collected 3 itemstest_04.py ..F [100%] FAILURES
_____________________________ TestClass.test_two2 _____________________________self test_04.TestClass object at 0x00000229D5D7E8D0def test_two2(self):print(this is test_two2)assert 2 1
E assert 2 1test_04.py:15: AssertionError
---------------------------- Captured stdout call -----------------------------
this is test_two2short test summary info
FAILED test_04.py::TestClass::test_two2 - assert 2 11 failed, 2 passed in 0.18s Process finished with exit code 0