本文关键阐述了python+pytest自动化技术测试函数测试类测试标准的封装形式,文章内容紧扣主题开展详尽的基本介绍,具有很强的实用价值,务必的朋友可以学习一下
序言
那么今天,我想跟大家聊聊python+pytest接口自动化里将编码开展封装形式,只有把测试程序开展封装形式,才会被测试框架鉴别实行。
例如多带带插口要求编码如下所示:
importrequests headers={ "user-agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/99.0.4844.51Safari/537.36" } url="https://mp.toutiao.com/profile_v4/" res=requests.get(url=h_url,headers=headers)
假定我们应该将上边这一段代码开发成测试框架能实施的功能测试,只不过是那样敲代码显而易见还远远不够,还要开展如下所示填补:
需要把代码封装成单元测试卷架构(pytest或unittest)能识别测试函数或测试类,否则就会不被鉴别实行。务必再加上肯定,即结论与希望中间对比,单元测试卷架构才可以判断该测试用例执行结果是不是根据,结论==希望则表明根据,不然不成功。
python中函数公式及其类封装形式这里就不进行任何表明,本文的目的在于让大家都搞清楚在接口自动化检测中通常如何封装测试编码。
一、功能测试封装形式的基本标准
功能测试的封装形式主要有两种,测试函数和测试类,封装形式的基本标准如下所示:
1个测试函数相匹配1条功能测试。测试类中可定义好几个测试标准,1个测试标准相匹配1条功能测试,测试类可以理解为是个功能测试集。pytest中测试函数或测试标准的取名必须以test开始,测试类名必须以Test开始。实际命名规范可以参考一下我其他回答pytest(3)-检测命名规范。针对单插口检测校检,一单插口功能测试只包括1个接口请求,将要1个接口请求封装形式成测试函数或测试标准。针对情景(多插口)的检测校检,1条情景功能测试需要求好几个插口,所以需要将好几个接口请求封装形式同一个测试函数或方式中。通常封装形式1个插口正面校检、出现异常校检封装形式成不同类型的方式,并封装形式同一个测试类中。如定位1个登陆的测试类,恰当登录名、登陆密码要求封装形式成方式(即1条功能测试),恰当登录名、不正确登陆密码要求封装形式成另外方式(即另一只功能测试)。还可以将某一功能模块或作用相关的插口测试用例封装形式同一个测试类中。例如用户中心涉及的插口,能够封装形式同一个测试类无厘头、测试函数的封装形式
一般说来,1个测试函数相匹配1条测试用例。上边的代码开发成一条功能测试,实例如下所示:
注重,pytest中测试函数取名务必以test开头,如test_get_home。
三、测试类/方式的封装形式
1个测试类等同于1个功能测试集,类中的每一个方式相匹配1条功能测试。以登陆插口为例子,封装形式成测试类,实例如下所示:
注重,pytest中测试类取名必须以Test开始,如TestLogin,且测试类中不能出现init方式。测试类中测试标准必须以test开始,如test_login_normal。
四、示例代码
pytest中可以使用命令行或者使用代码方式即pytest.main()执行用例,具体可参考文章pytest(1)-简介。
完整的示例代码如下:
import requests import pytest import json def test_get_home(): ''' 请求首页接口 :return: ''' headers={ "user-agent":"Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/99.0.4844.51 Safari/537.36" } url="https://www.cnblogs.com/lfr0123/" res=requests.get(url=url,headers=headers) #断言,判断返回结果的code是否等于200,当然实际接口测试中一般返回结果中还会有别的字段需要断言 assert res.status_code==200 class TestLogin: ''' 登录接口校验 ''' url="http://127.0.0.1:5000/login" headers={"Content-Type":"application/json;charset=utf8"} def test_login_normal(self): '''正确用户名、正确密码登录''' data={ "username":"AndyLiu", "password":"123456" } res=requests.post(url=self.url,json=data,headers=self.headers) #断言 assert res.status_code==200 assert json.loads(res.text)["token"] def test_login_error(self): '''正确用户名、错误密码登录''' data={ "username":"AndyLiu", "password":"111111" } res=requests.post(url=self.url,json=data,headers=self.headers) #断言 assert res.status_code==200 assert not json.loads(res.text)["token"] if __name__=='__main__': pytest.main()
汇总
测试函数、测试类/测试标准的封装形式,实际上不论什么单元测试卷架构,遵照的形式都是一样的。
但在命名规则上都各有自己的需求,例如pytest与unittest中检测命名方式具有一定的差别。
怎样把拥有自己肯定的函数公式或方式看作是1条功能测试,那样测试类其实就是个带有1条或是好几条功能测试的功能测试集,类中的每一个方式相匹配1条功能测试。
1个测试类中摆放什么测试标准,也就是说1个功能测试集中化应当涵盖什么功能测试,这一可以按新项目本身情况判断,也可以按照测试工程师自己的观点来定,中心思想就是为了条理清晰
综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130272.html
摘要:其中用到编程等,还需要花更多的精力去深入学习,当每项技能都能掌握到一定深度,才能称为一个完整的知识体系。 都有哪些种类的配置文件 pytest.ini:pytes...
摘要:单元测试框架作为的标准库,是其他单元测试框架的基础。可以和和配合使用编写单元测试。官网地址单元测试覆盖率工具单元测试中还需要用到代码覆盖率工具。代码覆盖率统计工具用来发现没有被测试覆盖的代码,完善单元测试的覆盖率。 在应用程序中,单元是具有一个或多个输入和单个输出的软件中最小可测试部分。单元...
摘要:本套代码和逻辑是本人的劳动成果,如果有转载需要标注,非常适合公司做项目的同学小白也可以学哦接口自动化项目目录公共方法的封装如果不用配置文件可以使用这个方法进行封装但是有一定的缺陷可以不使用字典。这是在正常的命令行解析之前发生的。 ...
摘要:必然的,他们会抛弃标准库中的,使用或者发明自己心仪的单元测试框架。究其原因,一些人会说时间写代码都不够,哪还有空写单元测试。最后我的个人观点,单元测试其实还有一个非常重要的作用,就是替代函数文档注释。希望从今天起,你的代码也都有单元测试。 单元测试是每种编程语言必学的课题,是保护开发者的强力护盾,每个程序员都在时间允许的情况下尽可能多的写单元测试,今天我们不讨论其必要性,只抛砖引玉聊一...
此篇文章详细介绍了python的单元测试卷架构pytest,原文中根据实例编码推荐的十分详尽。对大家学习培训和工作具有很强的参照参考意义,需要的小伙伴可以必须 pytest是python语言表达中一个强悍的单元测试卷架构,用于管理方法和管理功能测试,可运用在单元测试卷、功能测试工作上。 unittest也是python语言表达中一个单元测试卷架构,可是作用比较有限,没有pytest灵便。 ...
阅读 889·2023-01-14 11:38
阅读 833·2023-01-14 11:04
阅读 684·2023-01-14 10:48
阅读 1887·2023-01-14 10:34
阅读 890·2023-01-14 10:24
阅读 750·2023-01-14 10:18
阅读 478·2023-01-14 10:09
阅读 518·2023-01-14 10:02