python_pytest

一。过滤用例

1.定义

pytest,是由第三方开发的一个python单元测试框架,与python自带的unittest有些类似(pytest不完全兼容unittest)。

与unittest相比:

优点:

1)编写用例比较灵活,不需要unittest那样先继承,setUp,tearDown这样的写法,pytest中可以在函数或者类中使用

2)pytest更加简洁灵活(筛选用例)

3)不需要加载用例,自动发现用例

4)pytest兼容unittest

5)可以使用测试插件

6)引用测试报告更加方便

不足之处:

1)unittest是python自带的标准库,不需要安装

2)不需要考虑与python版本兼容的问题

注意:

2.pytest发现用例的规则

1)模块名称以test_或者_test.py

2)测试类中不能有__init__(self)

3)方法名称必须以test_开头

4)pytest测试用例可以脱离类的形式,可以直接使用函数的形式;类也可以不集成unittest.TestCase

5)自动发现用例(以如上1)、2)、3)的规则),unittest需要加载用例,用例执行顺序是按照ASCII码的顺序执行,pytest是按照用例的先后顺序一条条执行。

3.过滤用例

1)先注册ini文件,添加标签名(pytest.ini)

 2)打标签:需要在测试用例函数上面加 @pytest.mark.标签名 (标签名:步骤1)注册的标签名)

3)运行制定标签用例:

1.控制台命令:python -m "标签名"

2.python文件中执行:

if __name__ == "__main__":

  #执行标签名为error_test的用例
  pytest.main("-m error_test")

3.引用测试报告:

if __name__ == "__main__":

  #新增一个时间戳

  ts = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")

  #引入html测试报告,使用测试报告时需要先下载测试报告(pip install pytest-html)
  pytest.main(["--html={}.html".format(ts), "-m error_test"])

   #运行多个标签

  pytest.main(["--html={}.html".format(ts),"-m error_test","-m suesses"])

4.测试夹具

1.测试夹具设置(需要写在固定py文件中 =‘conftest’,该文件一般与‘run.py’同级放置--也就是放在最外层)

@pytest.fixture(scope="function")
def driver():
'''
  yield之前为前置条件
  yield之后的为后置条件
  yield 并排的driver是返回的参数,此处可以把driver返回
管理浏览器
function:每次执行都调用
class:一个类只执行一次
module:一个模块中只执行一次
:return:
'''
from selenium import webdriver
driver=webdriver.Chrome()
driver.implicitly_wait(WAIT_TIME)
yield driver
driver.quit()

 2.测试夹具的使用:

pytest.main(["--html={}.html".format(ts),"-m error_test","-m suesses"])
原文地址:https://www.cnblogs.com/newsss/p/13382911.html