从web抓取信息——Requests_power query怎么先提交web请求再提取返回数据-CSDN博客
第三方模块requests常用方法及Response对象属性和方法详解
第三方模块requests中data和json传参方式详解
第三方模块requests对于Cookie鉴权以及Session鉴权的处理
requests模块底层原理以及接口统一请求封装
Pytest框架简介,默认测试用例规则,运行方式详解以及前后置夹具应用处理。
Pytest框架之@pytest.fixtrue装饰器以及通过 conftest.py文件实现全局前置应用。
Pytest实现接口自动化断言以及结合allure- pytest插件生成企业级Allure测试报告
接口自动化测试框架请求封装以及接口关联框架封装改进。
pytest是python的第三方单元测试框架,比自带unittest更简洁和高效,支持非常丰富的插件,同时兼容 unittest 框架。
它可以和很多的工具或框架,selenium,requests,appium实现多种自动化测试。
它可以和allure结合生成美观的报告以及和jenkins实现持续集成。
最重要的是,它有很多的插件:
pytest框架的安装:pip install pytest
pytest框架优点
1、简单灵活,容易上手;
2、支持参数化;
3、能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appium等自动化测试,接口自动化测试(pytest+request);
4、pytest具有很多第三方插件,并且可以自定义扩展。
1、 .py 测试文件必须以test_开头(或者以_test结尾)
2、测试类必须以Test开头,并且不能有 init 方法
3、测试方法必须以test_开头
4、断言必须使用 assert
1、如果不提供任何参数,那么pytest会在当前目录及子目录下寻找以test_开头或者以_test结尾的测试文件,且该文件中以test_开头的测试函数
2、当运行时指定测试文件的时候
①此时目录一定要切换到测试文件所在的目录,否则pytest搜索不到测试,不会执行.
②执行测试文件里的函数的时候,会搜索以test_开头的测试函数执行,不符合此规则的函数不会被执行
③如果含有测试类,那么允许该测试文件时,会搜索类名以Test开头的类,且该测试类中的函数命名也必须符合要求才会被执行
④运行的方式可以在命令行也可以在主方法上面运行
例如:指定运行pythonDemo目录下的test_01模块
......
if __name__ == "__main__":
pytest.main(["pythonDemo/test_01.py"])
或者命令行模式:
pytest pythonDemo/test_01.py
pytest.main(['-vs'])运行时打印调试信息
1.发现用例:根据每个框架默认的规则去发现并且加载测试用例
2.执行用例:将测试用例安装一定的顺序和条件执行,并生成结果
3.判断结果:通过断言来判断实际结果和预期结果是否相同
4.生成报告:统计测试进度,耗时,通过率,生成报告。
第一种:和unittest相似
测试用例之前:setup()
测试用例之后:teardown()
类前执行:setup_class()
类后执行:teardown_class()
第二种:fixture固件
更强大,可以更加随心所欲地设置前后置处理。
装饰器
@pytest.fixture(scope="",params="",autouse="",ids="",name="")
第三种:@pytest.mark.usefixtures
使用装饰器@pytest.mark.usefixtures()修饰需要运行的用例。
叠加usefixture ,如果一个方法或者一个class用例想要同事调用多个fixture,可以使用@pytest.mark.usefixture()进行叠加,注意叠加顺序,先执行的放底层,后执行的放上层。
usefixtures和传fixture的区别:
如果fixture有返回值,那么usefixture就无法获取到返回值,这个是装饰器usefixture与用例直接传fixture参数的区别,当fixture需要用到return的参数时,只能将参数名称直接当参数传入,不适合使用usefixtures,只有不需要用到return出来的参数时,两种方式都可以。
举例1:在test_register前执行查询数据库操作
结果:
举例2:在test_register前后都执行查询数据库操作
yeild是生成器,可以多次返回数据,在此处的作用是唤醒执行用例后的操作。
结果
举例3:在每个用例前后执行查询数据库的操作
举例4:yeild可以返回值
举例5: 利用params传参进行数据驱动
结果
举例6 :ids当数据驱动时更改参数名
举例7:name:fixture的别名,调用时直接使用别名
1.Post请求
文件上传,文件所在路径
如果用左斜杠,一个就好;用右斜杠,要用两个,其中一个表示转义符;如果是绝对路径,也可以在前面加r。
2.Get请求,查询已上传的文件
3.PUT请求,更新文件
举例:PUT请求更新文件后,再用GET请求查询是否已更新。
思路:在类中创建一个全局变量,可以供类中的每个方法调用,从而实现接口关联。PUT请求的返回值(更改全局变量)作为GET请求的输入值。
1.统计数据
2.异常处理
try except
3.日志监控
统一封装:所有封装放在common包里面
WEB项目接口间基本都存在cookie关联。requests.session能够自动处理发送请求获取响应过程中产生的cookie,进而达到状态保持的目的。
requests.session的作用:
自动处理cookie,即下一次请求会带上前一次的cookie。
requests.session的应用场景:
自动处理连续的多次请求过程中产生的cookie。
Yaml测试用例详解以及Yaml语法规则详解以及读写和清除
Pytest+Paramatrizes+Yaml实现接口自动化 yaml测试用例数据驱动。
接口自动化框架集成Jenkins实现CI持续集成构建接口自动化生态体系
企业级接口自动化测试框架技术深入探讨和实现
1.YAML文件用途,结构,数据类型详解
2.Pytest用例管理框架数据驱动详解
3.Pytest结合Yaml实现数据驱动
4.pytest结合allure-pytest插件生成alture测试报告
5.接口自动化测试框架技术框架深入探讨和落地实施
所有模块、插件放进requirements.txt中。在Terminal中输入pip install -r requirement.txt,可以安装全部模块/插件。
一般来说,main方法放在最外层,新建一个run.py文件。
-s:表示输出调试信息,包括print打印的信息
-v显示更详细的信息
-vs一起使用
-n支持多线程或者分布式运行测试用例
conftest.py (命名固定)专门用来保存固件的文件
数据怎么实现关联?——用Yaml 文件保存,Yaml文件可以自动转换为json/字典格式。不用excel格式是因为Excel不能自动转换为字典,不好处理各种数据格式。
New file - xxx.yaml (例子:extract.yaml),所有数据都放到yaml文件。
Commom包下 - New Python file - yaml_util.py,对yaml文件做读写
读取yaml文件
with open(os.getcwd()+"/extract.yaml", encoding="utf-8") as f:
#os.getcwd根目录
结果:
写入Yaml文件、清空yaml文件
mode = 'a',表示追加;
mode = 'w',表示清空。
运行结果:
实战:将access_token写入Yaml文件
再获取access_token
结果:把access_token自动存入yaml
改进:在执行之前先清空yaml文件。
YAML文件用途,结构,数据类型详解
Yaml是一种数据类型,它可以和json之间灵活切换,支持注释,换行,字符串。
用途:配置文件;编写测试用例。
数据结构:
1.Map对象(键:(空格)值)
name: Amy
2.数组(list):用一组横线“-”开头来表示
- name: Amy
- name: Bob
数据驱动 :其实就是把我们测试用例的数据放到excel,yaml,csv,mysql,然后通过去改变数据达到改变测试用例的执行结果 。
数据驱动装饰器
@pytest.mark.parametrized() 装饰器可以实现对测试用例的参数化,方便测试数据的获取。
第一个参数是字符串,多个参数中间用逗号隔开
第二个参数是list,多组数据用元组类型;传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应