![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Pytest框架
开启自动化测试第一步
大语天气
这个作者很懒,什么都没留下…
展开
-
Pytest 项目结合Jenkins
参考网上其他教程。原创 2023-12-31 14:12:51 · 2196 阅读 · 0 评论 -
pytest之allure测试报告03:allure动态自定义报告
3、测试用例中读取调用。原创 2023-12-16 20:31:19 · 293 阅读 · 0 评论 -
pytest之allure测试报告02:allure具体使用方法
写入 addopts: -vs --alluredir ./report。./代表报告生成在当前文件的根目录,report即为生成目录文件夹的名称。如下运行case_optimize_class文件后,在test_case_optimize文件夹下生成report。3)控制台输入allure generate allure-report 同样也能项目根目录中生成报告。2)终端执行生成生成根目录report:会在整个项目的根目录下生成report。原创 2023-12-16 15:20:36 · 415 阅读 · 0 评论 -
pytest之allure测试报告01:Windows安装java和allure环境
使用pip install allure-pytest安装。把bin目录添加到环境变量Path下。下载完成后,解压至本地电脑。参考其他Java安装教程。在pycharm中,原创 2023-12-06 17:24:55 · 154 阅读 · 0 评论 -
框架日志模块logging03:完善接口返回的日志代码
2、定义process_response()处理判断接口返回内容。注意它需要mobile_query()的返回数据response作为传参。1、在utils文件夹下新建一个response_util文件。3、mobile_query()调用。原创 2023-11-20 14:11:37 · 76 阅读 · 0 评论 -
框架日志模块logging02:日志打印请求头相关参数
有时候请求头需要带有token或cookie,而上述写的requests方法无法获取到token或cookie。2)将request()中的request.get()换成self.session.get()。具体可搜索了解requests.get 跟 request.session().get 区别。1)在中初始化requests.session去接收请求的headers。1、在rest_client文件中创建专门日志打印方法。request()方法 调用。原创 2023-11-20 13:41:50 · 192 阅读 · 0 评论 -
框架日志模块logging01:日志模块logging配置
日常中主要使用info(),debug(),warnig(),error()的日志。执行用例后,查看log文件夹下的log文件可看到:已经正确打印出log内容。1)引入logging和os模块。2、编写日志配置文件代码。2)定义地变量接收地址。3、测试用例中调用。原创 2023-11-19 16:48:52 · 110 阅读 · 0 评论 -
框架代码分层优化04:接口请求部分代码完善
对于后续测试用例需要打印输出请求头,请求方法等日志信息,如果get()、post()都写入打印日志的代码,则会增加代码冗余度。:所以需要让get()和post()都统一调用一个request方法,只需要在request方法中写入打印日志代码。至此,用例执行成功,代码改造完毕。原创 2023-11-19 16:27:19 · 68 阅读 · 0 评论 -
框架代码分层优化03:接口请求部分代码封装
将接口请求部分代码抽出放到api文件中,如下mobile_query()即为请求接口的方法。1)新建一个文件夹及文件用来存放每个接口必须要调用的request,post方法。针对已经读取yaml和ini文件的用例代码的接口请求部分,进行封装。注意mobile_query()的括号中已经需要传入参数param。在调用rest_client文件的get方法的url基础上加上了。则以上两个方法中的params可直接去掉,进一步简化代码。1)新建一个专用的api文件夹及文件。如上图,第二步中的url仍需要完善。原创 2023-11-18 23:00:42 · 67 阅读 · 0 评论 -
框架代码分层优化02:读取yaml和ini代码分装
目的:创建一个文件,它同时包含读取yaml和ini方法。将两个读取方法用一个class统一封装起来。定义param,url实参接收两个读取方法的值。1、创建文件,封装方法。至此,封装调用成功。原创 2023-11-18 16:25:41 · 49 阅读 · 0 评论 -
框架代码分层优化01:python读取ini配置文件
一个项目中许多的用例请求都需要用到域名,域名变了就需要把所有用例中的url都进行修改,比较麻烦。2)引入configparser,编写read_ini()读取ini。1、创建ini文件。可以与yaml文件一起放在cofig文件夹下。4、用例代码中定义url接收read_ini的域名,并进行替换。1)安装configparser第三方包。至此配置读取域名ini文件成功。2、在ini文件中写入域名。3、创建方法读取ini文件。原创 2023-11-18 14:58:06 · 99 阅读 · 0 评论 -
pytest进阶参数化用法05:使用yaml进行接口实战
2、新创建一个read_data文件,存放编写调用data.yaml的read_data()。并用get_data接收read_data()的返回。至此,基于data.yaml文件中的传参数据有两组,只有一组正确。则以上两个方法均为一个pass,一个faild。3、主程序文件test_yaml_mobile调用read_data文件中的get_data。path的路径参考pytest进阶参数化用法04。1、编写data.yam存放请求参数l。原创 2023-11-18 13:00:47 · 164 阅读 · 0 评论 -
pytest进阶参数化用法04:yaml+parametrize使用
在pytest进阶参数化用法03中我们已经学会了读取yaml文件中的数据,那么此时只需要定义变量接收yaml的参数,去结合parametrize使用即可。成功传入data.yaml中的heros_name的三个参数,并成功运行三个用例。引入os模块,结合下图的yaml文件目录位置,利用os写出正确的文件目录地址。在实现读取yaml文件功能的文件代码中定义变量(get_data)接收。可得yaml的文件路径为:(可通过打印目录来判断文件地址是否已正确)1、找到正确的yaml文件的路径。2、定义变量并调用。原创 2023-11-17 15:05:53 · 359 阅读 · 0 评论 -
pytest进阶参数化用法03:python读取yaml文件内容
1、安装pyyaml第三方包。在Python Package中搜索后安装,或控制台输入pip install pyyaml进行安装。2、创建一个工具文件夹utils,及一个python文件用来编写调用yaml的方法。运行结果如下:同时也就可以观察返回的数据格式和层级是不是自己想要的结果。open()实现打开文件,括号中可使用相对路径找到文件的位置,3、引入yaml,并打开和调用data.yaml。safe_load()实现读取文件的内容。至此,python读取yaml内容成功。原创 2023-11-17 12:07:37 · 398 阅读 · 0 评论 -
pytest进阶参数化用法02:YAML详解
YAML是一个对所有编程语言都很友好的。它是一种直观的能够被电脑识别的数据序列化格式,是一种可读性高且容易被人类阅读、容易和脚本语言(不仅仅是Python)交互,用于表达资料序列的编程语言。YAML语言的本质是。原创 2023-11-17 11:38:37 · 427 阅读 · 0 评论 -
pytest进阶参数化用法01:parametrize详解
参数化parametrize可以组装测试数据,在测试前定义好测试数据,并在测试用例中使用,提高测试效率。parametrize单参数单次循环的基本语法:print(a)其中a为变量,变量的值b需要放在数组中。且def test_parametrize()中的括号内需要引入变量a。运行结果:如上代码定义了三个参数值,则分别三次给变量name进行赋值,执行三条测试用例可加上断言后运行:既分别拿三个参数和“小乔”进行判断,那么只有一条用例通过。原创 2023-11-16 16:09:41 · 1433 阅读 · 0 评论 -
pytest之fixture用法06:fixture中的params和ids
因为params_fixtur方法中有两个params参数,所以每次调用后打印出来,就是执行了两条用例。因为ids分别标识了用例名,也就一起打印输出。如上除了参数可修改,params_fixtur方法为固定写法,request和param是关键字不可修改。然后test_params进行调用。fixture中params和ids分别存放的是参数和用例名称。原创 2023-11-16 15:07:38 · 136 阅读 · 0 评论 -
pytest之fixture用法05:usefixtures方法
第一种是我们之前文章中已经使用的方法。第二种usefixture无法接收返回值,在方法不需要返回值时使用就会更直观地看出调用了fixture方法。@pytest.mark.usefixtures('use_fixture', 'use_fixture2')括号中是字符串格式。前提:定义了一个fixture方法。原创 2023-11-15 09:47:17 · 193 阅读 · 0 评论 -
pytest之fixture用法04:使用yield做后置处理
除了使用fixture做前置程序外,有时还需要对代码执行完成做后置处理,需要使用yield,使用方法如下:在contest文件对应的fixture函数增加代码。同样其他文件中的程序进行调用,执行结果如下。原创 2023-11-15 09:32:03 · 92 阅读 · 0 评论 -
pytest之fixture用法03:使用fixture返回数据
1、确定传参的参数。以测试手机号归属地的request请求为例,接口需要传的参数为shouji,appkey。后续接口使用fixture的数据,是实际场景中一大应用,起到了类似前置程序一样的作用。2)另外定义两个变量接收get_params的值,以这两个变量作为传参去请求。2、conftest中定义fixture方法返回shouji、appkey。3、调用2中定义好的get_params方法。此处有两种调用参数形式。1)传参中直接用get_params的返回值。原创 2023-11-14 17:46:31 · 309 阅读 · 0 评论 -
pytest之fixture用法02:使用conftest管理fixture
我们在pytest之fixture用法01中学习的fixture的具体用法都是直接写在用例文件当中,而使用conftest管理fixture就是将这些定义fixture方法代码统一放到一个文件里。既conftest所在文件夹的文件及其下级的文件的方法,都可以直接调用conftest中的方法。如果fixure方法中写入autouse=True,即为方法每次都自动执行该前置程序,无需在方法中再调入方法名。其他文件的用例方法要使用时,无需导入,直接调用conftest中相应fixture方法即可。原创 2023-11-14 16:01:22 · 78 阅读 · 0 评论 -
pytest之fixture用法01:fixture详解
session级的fixture用于多个py文件一起只调用一次的场景。2、@pytest.fixture 作用范围:fixture的作用范围:session>module>class>function。定义一个func()方法,标记@pytest.fixture(),括号为空则默认scop为function。即使类中的每一个方法都调用func,仍然只在第一个用例前执行func方法。哪个方法/函数要使用前置步骤,则在方法内调用前置方法的方法名。如果文件中的所有方法都需要使用该前置方法,fixture中加入。原创 2023-11-14 15:18:50 · 187 阅读 · 0 评论 -
pytest基础用法08:解决接口参数依赖
使用类属性传参给第二个用例的方式更好。原创 2023-11-13 21:08:56 · 154 阅读 · 0 评论 -
pytest基础用法07:skip和skipif的用法
但其可支持条件判断,括号内放入判断条件按,条件为true时跳过执行该用例,为false则不跳过。当需要跳过不执行某个测试用例时,则该用打上。@pytest.mark.skip即可。原创 2023-11-13 20:19:53 · 75 阅读 · 0 评论 -
pytest基础用法06:setup和teardown详解
运行结果如下,尽管程序中有两个测试用例,setup和teardown都只执行一次。注意:如果结果展示teardown的执行结果在前,setup的执行结果在后,这只是控制台输出格式问题(用的 -s),实际执行顺序还是先setup,后teardown。setup_function/teardown_function,对每条函数用例生效(setup/teardown不在类中)。4、方法级:setup_method/teardown_method,开始于方法始末(setup/teardown在类中)原创 2023-11-13 13:11:45 · 255 阅读 · 0 评论 -
pytest基础用法05:-m,-k,-q,-s,-v运行参数详解及ini配置指定运行参数
实际中测试用例有很多,如果每个用例都打上标签,不利于后期去除或变更标签。故可以给一个测试用例类打上标签,类中包含相应的测试用例。代码中不需要做其他操作,关注自己想要的用例包含的关键字,并在终端执行中带入该关键字。与testcases下的test_two 文件两个用例的判断情况一致。注意:ini文件中不要有中文符号,逗号,冒号,引号等。它能把程序中print的信息打印出来,其他与-q 的执行结果相差不大。最终识别包含mobile的文件中的两个用例并执行。五、pytest -v:输出我们用例中的调式信息。原创 2023-11-13 10:48:01 · 1692 阅读 · 1 评论 -
ptest基础用法04:指定目录、文件执行用例以及配置testpaths
目的:配置一个默认执行的目录文件地址,然后每次终端输入pytest就自动只执行该目录下的测试用例。2)在pytest.ini中第一行输入[pytest]。1)选择主项目新建一个file,取名为pytest.ini(必须是这个名字)。终端只需输入pytest,而不再需要输入具体目录即可准确执行。2)指定文件,pytest 文件夹名/文件名。结果:搜索并执行该文件夹下所有文件的测试用例。1)指定目录:pytest 文件夹名。结果:只执行该文件下的测试用例。同理,也支持地址配置为指定文件。原创 2023-11-12 17:08:32 · 1543 阅读 · 0 评论 -
Pytest基础用法03:pytest+requests执行用例
2、定义test_mobile的方法。然后如requests模块练习中一样,定义变量接收requests请求结果。该接口post和get请求一致都是params传参,故post请求接口如下图所示,与get没有很大差异。1、用postmen请求接口,确定接口传参及返回结果。以手机号归属地接口为例。3、对返回结果进行assert断言,并执行结果查看断言结果,验证用例是否通过。原创 2023-11-11 22:38:46 · 53 阅读 · 0 评论 -
Pytest基础用法02:测试用例命名规范及执行顺序
1、默认执行顺序:从上到下按顺序执行。控制台输出用例执行顺序语法:pytest -vs 文件名.py。如下图,控制台输出的用例执行顺序和代码中书写顺序一致,为默认从上到下的顺序。1、.py测试文件必须以“test_”开头(或“_test”结尾)再标识每个用例的顺序后执行,结果便可以得到想要的顺序。3、测试类必须以Test开头,并且不能有init方法。2、使用pytest_ordering自定义顺序。同理,如果需要定义test类的执行顺序,也如此操作。2、测试方法必须以“test_”开头。原创 2023-11-11 19:30:07 · 182 阅读 · 0 评论 -
Pytest基础用法01:安装包及运行测试用例
2、在file--setting--Tools--python intergrated Tools中修改testing为pytest。PythonPackage中搜索pytest后安装即可。修改后,test用例即显示绿色执行按钮,点击即可执行。原创 2023-11-09 19:52:36 · 64 阅读 · 0 评论 -
requests方法学习05: requests模块session用法
但是接着请求第二页订单时,因为没有保存token,返回的是登录页,无法得到订单列表的第二页。3、再次运行r打印res2(第二个接口)返回,成功。如下,登录接口登录成功,进入订单页面。(1)定义一个变量接收该方法。(2)相应的两个接口跟着变化。原创 2023-11-09 14:43:18 · 92 阅读 · 0 评论 -
requests方法学习04: requests 加入headers进行请求接口
以豆瓣-电影页面为例,只传入url和参数运行时,报错418状态码,搜索可知为豆瓣的反爬虫机制,需要加入headers相关头部信息。提示:一般的反爬虫机制为:检查请求头的 User-Agent、Referer、Cookies 等。至此,带headers的requests请求成功。原创 2023-11-09 11:14:03 · 649 阅读 · 0 评论 -
requests方法学习03:requests模块进行post请求
观察post方法(ctrl+鼠标左键点击post方法可看到),已定义可以用form-data、json格式进行传参,因为。**kwargs所以也可以关键词参数传参。同02中get方法的params传参方式。原创 2023-11-08 20:58:12 · 52 阅读 · 0 评论 -
requests方法学习02: requests模块带参数进行get请求
同样调用get方法,get方法中放入params参数。既params= params中左边的params是形参,右边的自己定义的实参。1、查看get方法的参数形式。发现其中包含url,params参数,及kwargs关键字参数。既该参数是请求url时需要带入的参数。原创 2023-11-08 20:04:36 · 350 阅读 · 0 评论 -
requests方法学习01: pycharm创建项目并进行接口请求
4、定义变量并使用requests方法。定义r接收requests方法的结果,打印输出r中的不同形式结果及status code。文件中如图 输入 import requests,requests标红表示未引入。鼠标悬浮requests后点击安装requests包。选择File-->New Project,在1处选择项目存放地址,勾选2处后并点击Create创建成功。File-->New-->Python file并命名,保存创建成功。原创 2023-11-08 19:16:18 · 241 阅读 · 0 评论