本文介绍: 与Unittest不同,不需要装饰器,也不需要指定继承,不需要将类名函数固定以Test开头。类直接定义继承基类object即可命名不需要特定以test开头,但是要注意类名开头统一,方便执行(不需要必须以Test开头,但是开头也要一致)特殊函数:①函数级别:开始函数 setup(self)、结束函数 teardown(self)②类级别:开始函数setup_class(self)、结束函数 teardown_class(self),不需要装饰指定为类方法

基础知识学习完毕,接下来我们开始学习测试框架啦!!!

首先来回顾一下python自带的Unittest框架

Python基础学习016__UnitTest-CSDN博客文章浏览阅读97次。Testcase:测试用例:这个测试用例是UnitTest的组成部分,不是手工和自动化中所说的用例(Test Case)# Fixture:测试夹具:书写在TestCase中的,是一种代码结构,在每个方法执行前后都会执行的内容.# 为什么使用:能够组织多个用例去执行.提供了丰富的断言方法,能够生成测试报告。# TestSuite:测试套件,用来管理,组装(打包)多个TestCase。# TestRunner:测试执行:用来执行TestSuite。# 可以用例的前置后置条件放在这里https://blog.csdn.net/Chrisliuluo/article/details/134271984?spm=1001.2014.3001.5501

Python基础学习017__断言-CSDN博客文章浏览阅读26次。【代码】Python基础学习017__断言https://blog.csdn.net/Chrisliuluo/article/details/134296766?spm=1001.2014.3001.5501

Python基础学习018____参数化-CSDN博客文章浏览阅读16次。【代码】Python基础学习018____参数化。https://blog.csdn.net/Chrisliuluo/article/details/134302520?spm=1001.2014.3001.5501Python基础学习019–跳过-CSDN博客文章浏览阅读145次。【代码】Python基础学习019–跳过。https://blog.csdn.net/Chrisliuluo/article/details/134538737?spm=1001.2014.3001.5501Python基础学习__测试报告-CSDN博客文章浏览阅读162次。stream = sys.stdout,必填,测试报告的文件对象(open一个文件就可以得到一个文件对象)即测试报告名称,注意,必须使用wb(二进制写入)打开。# runner = HTMLTestRunner(f,2,’测试报告名称‘,’Python3.11′) # 运行对象。# 即将报告模板放在代码目录下,导包,添加用例,使用第三方的Runner代替Python自带的TextTestRunner来执行用例实例。# title = None ,可选,是测试报告的标题https://blog.csdn.net/Chrisliuluo/article/details/134538760?spm=1001.2014.3001.5501接下来我们来学习一个新的框架:pythet

1.与Unittest框架相比,优缺点

优点:功能更加强大,代码简单,可以调用执行Unittest代码

缺点:需要安装才能使用

2.安装

直接安装:        pip install pytest

指定版本安装:        pip install pytest==版本号

查看安装结果:        pip list 或        pytestversion

3.使用

(1)定义

与Unittest不同,不需要装饰器,也不需要指定继承,不需要将类名或函数名固定以Test开头

类直接定义,继承基类object即可命名不需要特定以test开头,但是要注意类名开头统一,方便执行(不需要必须以Test开头,但是开头也要一致)

特殊函数:

①函数级别:开始函数 setup(self)、结束函数 teardown(self)

②类级别:开始函数setup_class(self)、结束函数 teardown_class(self),不需要装饰指定为类方法。

(2)执行:

①使用主函数形式执行:在测试用例文件末尾添加如下代码

if __name__ == '__main__':
    """
   语法: pytest,main(['-s','文件名.py'])
    """
    pytest.main(['-s', 'Pytest001_主函数形式执行.py'])

②使用配置文件+pytest命令执行:

注意:配置文件命名,可以为pytest.ini|tox.ini|setup.cfg|pyproject.toml,任选其一即可,通常用pytest.ini。不可以随便自定义

pytes.ini文件中不可以有注释,搬运的时候记得把下边代码的注释全部去掉

一个工程通常只有一个配置文件,放在根目录

写好配置文件,想要批量执行用例,只需要在Terminal命令行输入pytest命令即可

[pytest]
# 测试用例代码的路径
testpaths =./scripts/
?
# 测试用例代码文件前缀,此处以test为例,可以是项目缩写或任意字符,
# 批量执行在testpaths指定路径下,以test开头的测试文件
# 只要开头统一能使用通配符*匹配到,就可以批量执行以指定字符串开头的测试文件
python_files = test*.py
# 测试类指定开头,可以是任意字符,此处以Test为例
python_classes = Test*
# 测试方法指定开头,可以是任意字符,此处以Test为例
python_functions = test*
# 执行用例时,使用pytest命令,添加什么字段
# -s表示执行文件
# --html=./report/testreport1.html表示生成html文件形式的测试报告,保存在./report/testreport1.html路径
# --self-contained-html表示生成html报告要将CSS文件整合在一起,保留页面布局
# --reruns 0表示用例的失败重执行次数addopts = -s
          --html=./report/testreport1.html --self-contained-html
          --reruns 0
# 生成日志格式	
log_format = %(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(funcName)s:%(lineno)d)] - %(message)s
# 生成日志时间格式
log_date_format = %Y-%m-%d %H:%M:%S
#是否生成日志文件
log_cli = true
# 生成日志级别
log_cli_level=INFO
# 日志文件保存路径
log_file = ./log/test1.log

控制执行顺序
在方法的上方添加@pytest.mark.run(order=X),X可以为正数、负数也可以正负数同时存在。1.order同为正数或同为负数时,值越小优先级越高.正负数同时存在时正数优先,同类数越小优先级越高

2.对方法有效,对测试类同样有效

扩展:Unittest是通过ascII码决定执行顺序

(3)跳过

pytest与Unittest有相似的跳过功能,不过实现方式不同。同样是添加装饰器。

@pytest.mark.skipif(version <= 20, reason=’版本低于20不支持功能‘)

注意reason=不可以缺。

用于函数,也适用于

(4)断言

pytest没有封装断言方法,可以直接使用python自带断言

assert 表达式

表达式结果为True断言成功,表达式结果为False则抛出断言错误异常

例如:assert 1==0,则抛出异常,assert ‘h’ inhello‘ ,则断言成功

(5)参数

①单个参数

@pytest.mark.parametrize('name', ['张飒', "李思思"])

多个参数:将多个参数名使用一个字符串逗号隔开,或将多个参数名放在一个元组

@pytest.mark.parametrize('name,passwd,msg', test_data)
@pytest.mark.parametrize(('name','passwd','msg'), test_data)

通过函数引入测试数据

@pytest.mark.parametrize((‘name‘,’passwd‘,’msg’), test_data())

加一个PO模式封装实战——在线计算器

代码:

https://download.csdn.net/download/Chrisliuluo/88588738?spm=1001.2014.3001.5503

原文地址:https://blog.csdn.net/Chrisliuluo/article/details/134684138

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_25832.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注