前提:需要安装pytest和pytest-html(生成html测试报告)
在pycharm中安装两个插件pip install pytest 和 pip install pytest-html
pytest中命名规则
类名和方法名都必须以test开头,执行只能找以tset开头的
与unittest一样有四个公共方法setup /setupclass /teardown /teardownclass
额外的:-x 出现一条测试用例失败就退出测试
-s:显示print内容
跳过某一条用例(函数)
@pytest.mark.skip
运行方式 .代表用例通过
F代表失败 E代表存在异常
需要下载html模板生成报告
1.在指定的模块下,运行test开头的类和测试用例
pytest.main(["--html=./report.html","模块.py"])
2.指定模块中的指定用例(用冒号分割)
pytest.main(["--html=../report.html","模块.py"])
3.直接执行pytest.main() 【自动查找当前目录下,以test_开头的文件或者以_test结尾的py文件】
pytest.main([‘--html=./report.html’])
allure
下载allure,找到下载路径,将路径配置到path中
在pycharm中安装allure
pip install allure-pytest
allure常用特性
@allure.feature # 用于描述被测试产品需求
@allure.story # 用于描述feature的用户场景,即测试需求
with allure.step(): # 用于描述测试步骤,将会输出到报告中
allure.attach # 用于向测试报告中输入一些附加的信息,通常是一些测试数据,截图等
pytest中的数据驱动
parametrized为pytest中自带的数据驱动装饰器
pytest.mark.parametrize
数据驱动的数据源可以是函数外的数据集合、CSV 文件、Excel 表格、TXT 文件,以及数据库等多种形式。
@pytest.mark.parametrize() 装饰器接收两个参数:
第一个参数以字符串的形式存在,表示用例函数的参数,假如测试函数函数有多个参数,则以逗号分开。
第二个参数用于保存测试数据。
假如只有一组数据,则以列表的形式存在如[0,1],如果有多组数据,以列表嵌套元组的形式存在(如[(0,1), (1,2)])
多组数据用多个变量去接受
unittest和pytest的区别
unittest和pytest的区别
uniitest是python自带的模块,只需要import unittest
pytest需要下载pytest才能使用,pip install pytest >>import pytest
都有公共方法:setup /setupclass /teardown /teardownclass
命名规则:unittest中类需要继承unittest.TestCase 测试用例必须是test开头
pyetst中类名和用例名都必须是test开头
生成测试报告
unittest需要下载htmltestrunner.py模块 才能生成测试报告
pytest需要下载pytest-html 可以生成测试报告 也可以结合allure生成测试报告
调用
unittest中 unittest.main()调用
pytest中pytest.main()调用 可以加参数:-s 可以打印数据 -x 如果有错直接退出, 模块名执行该模块,模块名:test_开头或者_test结尾,不加模块执行全部
都可以读取csv/xml数据进行。传入测试用例中进行操作
数据驱动
unittest中数据驱动ddt >>pip install ddt >>>from ddt import ddt,data,unpack,file_data
@ddt修饰器修饰类 @data 传递数据 @unpack 拆包
pytest中数据驱动parametrize
@pytst.mark.parametrize()