企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ## Pytest参数 ### 1:-K EXPRESSION 执行某个关键字的用例 用例要匹配给出的表达式;使用python的语法,匹配的范围是文件名、类名、函数名为变量,用and来区分 如下面一段测试用例 ~~~ class TestClass(object): def test_zne(self): x = "hello" assert 'h' in x def test_two(self): x = "check" assert hasattr(x, 'check') def test_a(self): assert 1 == 2 ~~~ 运行pytest时带-k参数 ``` pytest -k "test and TestClass and not test_a" pytest_test.py ``` ![](https://img.kancloud.cn/2e/cb/2ecb171ae4ff3db634537a6c5e0d6f43_1419x516.png) 可以看出,test\_a这个用例被取消选择了,没有运行了 <br> <br> ### 2:--maxfail=num \----maxfail=num 表示用例失败总数等于num 时停止运行 ``` pytest --maxfail=1 pytest_test.py ``` ![](https://img.kancloud.cn/40/a9/40a9c2f9557fe065f4ff2fc1a6924c84_1411x542.png) <br> <br> ### 3:-m MARKEXPR 只能运行有相应标识的测试用例,使用这个参数,测试用例要使用@pytest.mark.marker修饰   如下实例 ~~~ import pytest class TestClass(object): def test_zne(self): x = "hello" assert 'h' in x def test_two(self): x = "check" assert hasattr(x, 'check') def test_one(self): assert 1 == 2 @pytest.mark.slow def test_tow(self): """New case""" num = "word" assert hasattr(num,"word") ~~~ teste\_two使用了@pytest.mark.slow来修饰 在使用时,使用如下参数 ``` pytest -m slow pytest_test.py ``` ![](https://img.kancloud.cn/b2/46/b246dc0c2872939bde38596a316952dd_1422x693.png) 从上图中可以看出,只运行了一个我们带有标识的用例。 注意,-m后面不能带''号(单引号),只能带“”(双引号),不然识别不到 如果要运行多个标识的话,用表达式,如下 ``` pytest -m "slow or faster" 运行有slow标识或 faster标识用例 pytest -m "slow and faster" 运行有slow和faster标识的用例 pytest -m "slow and not faster" 运行有slow和没有faster标识的用例 ``` <br> <br> ### 4: -v, --verbose **可以输出用例更加详细的执行信息,如下图** ![](https://img.kancloud.cn/ae/4c/ae4cf32ffa8ac0428d6a3931b8f8a069_1389x707.png) ![](https://img.kancloud.cn/33/0d/330db5eaf96864029c99a336b01eb57c_1386x594.png) <br> <br> ### 5:\-q, --quiet **简化控制台的输出** <br> <br> ### 6:\-s 输入我们用例中的调式信息,比如print的打印信息等,我们在用例中加上一句 print(driver.title),我们再运行一下我们的用例看看,调试信息输出 <br> <br> ### 7:--junit-xml=path 输出xml文件格式,在与jenkins做集成时使用 <br> <br> ### 8: --result-log=path 将最后的结果保存到本地文件中 注意:标黄的是经常使用的 <br> <br> ## 四、pytest 用例规则 pytest可以在不同的函数、包中发现用例,发现的规则如下 * 文件名以test\_开头的py文件 * 以test\_开头的函数 * 以Test开头的类 * 以test\_开头的方法(与2类似) * 要注意的是所有的包必须要有init.py文件(在使用各种编辑器时会自动生成)