随笔分类 - pytest
摘要:如何在遇到异常时软件自动截图和保留page source? 解决方法:使用自定义的装饰器 如何编写装饰器: 1.先搭建装饰器的架子 def wrapper(func): def inner(*arg,**kwargs): func(*arg,**kwargs) #func为被装饰的方法 #实现逻辑
阅读全文
摘要:这一篇主要讲怎么优化现有代码。 本篇将会由几个方面进行优化: 1.通过将定位信息转换成变量来进一步封装 2.配置log,在必要的地方打log,方便后续调试和排查问题 3.使用allure生成测试报告 4.数据清理 5.参数化 通过将定位信息转换成变量来进一步封装 举一个例子,其他的类也差不多改造下。
阅读全文
摘要:上一篇主要是搭建框架,这一篇来讲解下各个部分的逻辑。 Base Page: 这个类放着各个页面类通用的方法,我们先来封装下find element和sendkey class BasePage: _BASE_URL = "" def __init__(self,base_driver=None):
阅读全文
摘要:思路梳理 梳理测试用例: 1.流程 添加类目: 2.前置后置动作 前置: 创建driver 添加隐式等待 窗口最大化 后置: driver销毁 class TestLitemall: def setup_class(self): self.driver = webdriver.Chrome() se
阅读全文
摘要:插件分类 插件分三种: 1.外部插件(三方开发的) 安装方式:pip install 哪里可以找到三方插件: https://pypi.org/ 常用插件: pytest-ordering 作用:指定执行顺序 使用:(fixture用法类似)@pytest.mark.run(order=1) * 尽
阅读全文
摘要:总结 pytest.ini 修改用例的命名规则 配置日志格式,比代码配置更方便 指定执行目录 排除搜索目录 添加标签,防止运行过程报警告错误 添加默认参数 注意:windows下要去掉所有的中文,不然会出现编码问题 报错:UnicodeDecodeError: ‘gbk‘ codec can‘t d
阅读全文
摘要:模拟setup,teardown(一个用例可以引用多个fixture)fixture和yield基础使用 yield 的用法 fixture和yield基础使用 作用域( session,module, 类级别,方法级别 )fixture和yield基础使用 自动执行 (autouse 参数)fix
阅读全文
摘要:Fixture 在自动化中的应用 -参数化 场景: 测试离不开数据,为了数据灵活,⼀般数据都是通过参数传的 解决: fixture 通过固定参数 request 传递 步骤: 在 fixture 中增加@pytest.fixture(params=[1, 2, 3, ‘linda’]) 在⽅法参数写
阅读全文
摘要:Fixture 在自动化中的应用 - 自动应用 场景: 不想原测试⽅法有任何改动,或全部都⾃动实现⾃动应⽤, 没特例,也都不需要返回值时可以选择⾃动应⽤ 解决: 使⽤ fixture 中参数 autouse=True 实现 步骤: 在⽅法上⾯加 @pytest.fixture(autouse=Tru
阅读全文
摘要:使用fixture和conftest文件可以让数据共享 Fixture 在自动化中的应用 - 数据共享 场景: 你与其他测试⼯程师合作⼀起开发时,公共的模块要在不同⽂件中,要在⼤家都访问到的地⽅。 解决: 使⽤ conftest.py 这个⽂件进⾏数据共享,并且他可以放在不同位置起着不同的范围共享作
阅读全文
摘要:fixture 使用介绍: @pytest.fixture() #加fixture装饰器,可以让这个方法后面被调用 def login(): print("\nlogin.....\n") def test_search(): print("search") def test_order(login
阅读全文
摘要:生成测试报告流程 使用 Allure2 生成精美报告 这两个方法都开启了tomcat服务,随着服务关闭就会关闭。如果需要一个长时间的存在,就需要部署服务器,后续可以和Jenkins一起用。 命令格式:allure [option] [command] [command options] 在测试执行期
阅读全文
摘要:加文本 allure.attach("这是一段文本信息",name="文本显示") 加截图 @allure.feature("搜索模块") class TestSearch(): @allure.story("搜索成功") @allure.title("搜索用例1") def test_case_1
阅读全文
摘要:学习网站: https://docs.qameta.io/allure/#_pytest Feature & Story & step &Title的用法: 运行: pytest test_demo.py --alluredir ./result //py文件为运行文件 result为放报告的地址
阅读全文
摘要:案例: 从json文件中取值判断是否第一二行的值之和等于第三行的值 1.创建对应目录,准备好对应json文件 2.创建operation.py def my_add(x,y): result = x + y return result 3.创建test_add.py 关键代码:get_json()
阅读全文
摘要:案例: 从csv文件中取值判断是否第一二行的值之和等于第三行的值 1.创建对应目录,准备好对应csv文件 2.创建operation.py def my_add(x,y): result = x + y return result 3.创建test_add.py 关键代码:get_csv() imp
阅读全文
摘要:官方文档https://openpyxl.readthedocs.io/en/stable/ 案例: 从excel文件中取值判断是否第一二行的值之和等于第三行的值 1.创建对应目录,准备好对应excel文件 2.创建operation.py def my_add(x,y): result = x +
阅读全文
摘要:1.创建yaml文件:xxx.yml (key-value格式) 2.使用yaml 库safe_load方法取出yaml数据 * yaml文件需加 - 来标识为字典,不然取出时就只会取出keys 实例: 1.创建yml文件env.yml - test: 127.0.0.1 2.创建一个判断环境的函数
阅读全文
摘要:具体内容需要二次学习,课程里面只提及两种处理方式。 try except例子: try: a = int(input()) b = int(input()) c = a/bexcept ZeroDivisionError as e: print("cannot be zero")
阅读全文
摘要:使用main函数(此方法对后续做持续集成有用): 1.创建main函数 2.判断运行范围是多大,再根据需要运行哪些用例来写代码 3.使用命令行 python xxx.py来执行 举例: if __name__ == '__main__': #运行当前目录下所有的用例 pytest.main() #执
阅读全文