一、pytest设计项目结构项目结构说明:files:文件fixtures:pytest fixturereports:allure测试报告samples:示例代码 db:数据库 test_mysql.py:连接MySQL http:requests请求 test_request.py:requests常见用法 test_request_monkey_patch.py:tep
一、Windows安装java和pycharm安装allure插件pycharm安装allurepip3 install allure-pytestWindows安装javahttps://www.win7zhijia.cn/win10jc/win10_44536.html二、Allure用例描述Allure用例描述使用方法参数值参数说明@allure.epic()epic描述定义项目、当
一、为啥要在自动化框架上增加日志模块·记录程序运行信息·方便定位问题二、python日志模块logging·DEBUG·INFO·WARNING·ERROR废话不罗嗦,直接上代码(直接百度敲的OKO)#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Pytest @File :log_util.py@IDE :PyCharm @Au
一、读取yaml和读取ini代码优化思路:两个读取文件放到一个读取文件废话不罗嗦,直接上代码#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Pytest @File :read_data.py@IDE :PyCharm @Author :zhou@Date :2022/8/6 19:05 """import configparse
废话不罗嗦,直接上代码[host]api_sit_url = https://api.binstd.com#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Pytest @File :read_ini.py@IDE :PyCharm @Author :zhou@Date :2022/8/7 9:47 """import config
一、当前代码存在的问题及解决思路Q:如果域名变了,该怎么办?(测试用例代码分层思想)A:(1)可以单独把域名封装起来,用个变量直接替换(2)yaml\ini暂时想不到其他的方法去解决这个问题了(欢迎补充)
一、废话不罗嗦,直接上代码@pytest.mark.parametrize("mobile, appkey", get_data["mobile_belong_get"])def test_mobile(mobile, appkey): r = requests.get('https://api.binstd.com/shouji/query', params={ "shouj
一、读取yaml(关键点在于文件的路径)1、单参数版,多参数版#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Pytest @File :read_data.py@IDE :PyCharm @Author :zhou@Date :2022/8/6 19:05 """import osimport yamlpath = os.pat
#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Pytest @File :read_data.py@IDE :PyCharm @Author :zhou@Date :2022/8/6 19:05 """import yaml# 获取文件f = open("../config/data.yaml", encoding="utf-8
一、YAMLYAML语言的本质是一种通用的数据串行化格式二、适用场景·在脚本语言中使用,实现简单,解析成本低·序列化·编程时写配置文件,比xml快,比ini文档功能更强·YAML是专门用于写配置文件的语言,非常简洁和强大,远比json格式方便三、YAML支持的三种数据结构·对象:即键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)·数组:一组按次序排列的
一、参数化parametrize1、参数化可以组装测试数据,在测试前定义好测试数据,并在测试用例中使用#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Pytest@File :test_parametrize_01.py@IDE :PyCharm@Author :zhou@Date :2022/8/6 17:37"""import
一、Fixture夹具,@pytest.fixture(params=["参数1", ”参数2“], ids=["用例1", "用例2"])带上idsPS:fixture主要的目的是处理前置跟后置,测试数据不是主要,测试数据是单独管理!!!!!!!!
@pytest.fixture(scope='function')def func(): *****# 第一种,可以接收返回值def test_func(func): *****# 第二种,无法接收返回值@pytest.mark.usefixtures('func')def test_func(): ******这里主要是学习第二种这里就没有拿到上一篇文章中yield的返回值‘z
一、使用yield做后置处理老样子,可以在conftest.py文件里面的方法去使用yield跟return的区别在于,return返回后程序就终止了,但是yield可以返回值,然后继续执行下面的语句(但是不建议,因为测试数据一般单独管理)
一、return返回值1、定义返回值函数,打上该函数的作用范围,需要的使用的函数直接调用2、当然也可以直接将方法直接在conftest里面定义(动手试试会很有意思)
Q:Fixture怎么使用才能是大家使用的方便、舒服?A:建议都放到conftest.py文件去定义
一、fixture详解1.fixture概念fixture是pytest用于将测试前后进行预备(运行测试用例之前做一些前置步骤)、清理工作(处理测试产生的垃圾数据)的代码处理机制2、fixture相对于setup和teardown来说有以下几点优势:·fixture命名更加灵活,局限性比较小·conftest.py配置里面可以实现数据共享,不需要import就能自动找到一些配置二、fixture
1、skip只是单纯的标签测试用例跳过测试2、skipif先进行判断,结果True就跳过,False就不跳过、
1、模块级 setup_module/teardown_moudule (开始于模块始末、全局)2、函数级 setup_function/teardown_fucntion (只对函数用例生效(不在类中))每一次运行测试方法都会运行一次setup_method/teardown_method3、类级 setup_class/teardown_class (只在类中前后运行一次(在类中))4、方法级
创建位置在项目的主目录的根目录下创建file:pytest.ini基础了解testpaths=./test_case #指定某一路径为测试路径
基础中的基础ps:这里指令的斜杠最好用‘\’1、指定目录2、指定文件
1、先安装pip install pytest2、初始pytest以及断言""" Author:Zhou Create_Date:2022年07月31日--20:51 Tool:PyCharm Software: PyCharm"""def test_one(): except1 = 1 actual1 = 1 assert except1 == actu
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号