目前团队在使用的工具是pytest+u2。并通过python的celery异步与jenkins做结合达到打包完成后自动执行测试的目的。最后需要回传测试结果到外网的数据库中并在钉钉同步测试结果。UI自动化,不同于接口,在case量级上来之后执行时间往往以小时计。目前App自动化项目情况:case量:1000条左右执行时间:6h+case低耦合思路这次写的自动化项目初衷是可以兼容android、ios
转载
2024-02-27 10:00:03
75阅读
有一点首先需要确认的的是,pytest中的fixture是pytest用于将测试前后进行预备,清理工作的代码分离出核心测试逻辑的一种机制。但是我们更加希望的是在一个测试套件中,能够共享fixture的机制,这样所一个测试套件里面的所有测试点都能够共同使用,和我在早期介绍的分离测试固件的思想有点雷同。在pytest中通过conftest.py来共享fixture,如果希望多个测试文件共同使用一个fi
转载
2024-03-20 12:09:24
39阅读
1、appium+python 实现单设备的 app 自动化测试启动 appium server,占用端口 4723电脑与一个设备连接,通过 adb devices 获取已连接的设备在 python 代码当中,编写启动参数,通过 pytest 编写测试用例,来进行自动化测试。2、若要多设备并发,同时执行自动化测试,那么需要:确定设备个数每个设备对应一个 appium server 的端口号,并启动
Unittestunittest大家应该都不陌生。它作为一款博主在5-6年前最常用的单元测试框架,现在正被pytest,nose慢慢蚕食。渐渐地,看到大家更多的讨论的内容从unittest+HTMLTestRunner变为pytest+allure2等后起之秀。不禁感慨,终究是自己落伍了,跟不上时代的大潮了。回到主题感慨完了,回到正文。虽然unittest正在慢慢被放弃,但是它仍然是一款很全面的测
转载
2024-04-29 14:37:05
15阅读
目录pytest用例设计原则setup与teardownfixture方法相较setup/teardown优势参数化parametrize函数传参 pytest用例设计原则文件名以test_.py文件和test.py 以test_开头的函数 以Test开头的类 以test_开头的方法 所有的包pakege必须要有__init_.py文件 用例按照你写的顺序去执行,不像unittest会按照数字和
转载
2024-02-24 23:36:52
101阅读
文章目录下载安装报告内容Overview 报告概述Categories 类别如何创建自定义缺陷分类Suites 测试套件Graphs 图表Timeline 时间线Behaviors 行为Packages 包生成报告的命令设置报告中的测试环境设置历史趋势文件开启端口访问,分享测试报告自动获取测试失败截图常用用法设置标签 下载安装第三方库,需要安装:pip install allure-pytest
转载
2024-06-24 04:33:13
120阅读
为什么需要自动化测试自动化测试有很多优点,但这里有3个主要的点可重用性:不需要总是编写新的脚本,除非必要,即使是新的操作系统版本也不需要编写脚本。可靠性:人容易出错,机器不太可能。当运行不能跳过的重复步骤/测试时,速度会更快。全天运行:您可以在任何时间或远程启动测试。夜间运行正在测试你的软件,即使是在你睡着的时候。成熟的、功能齐全的Python测试工具——pytest目前有多种可用的测试框架和工具
转载
2024-05-07 13:49:54
146阅读
之前一文中提到了,到底pytest_repeat插件的具体功能是如何实现的呢?相信具体了解了该插件,其他三方插件也可以很快了解它内部运行机制。 不使用pytest_repeat插件如何实现重复执行用例最笨的办法,当然是运行多次,但这显然不是我们需要的。在装饰器复习这片文章中,我们复习了装饰器相关知识点,知道装饰器可以在不修改原始代码的情况下,动态的增加功能或修改函数行为。显然,这里我们就
转载
2024-07-22 18:46:35
35阅读
文章目录1. pytest执行模块不是顺序的2. 实际举例3. 解决case之间的相互影响 1. pytest执行模块不是顺序的pytest在执行一个模块的所有case时,并不是按照代码从上往下的顺序执行的。每个case的测试环境是一定的,有前置和后置环节,如果在测试过程中有其他case插入,就可能产生这样的情况:其他case的操作导致被插入的case执行环境异常,从而导致测试不通过。即:cas
转载
2024-03-16 08:19:04
111阅读
一、Pytest优点认知:1.可以结合所有的自动化测试工具 2.跳过失败用例以及失败重跑 3.结合allure生产美观报告 4.和Jenkins持续集成 5.很多强大的插件pytest-html:生产html测试报告
pytest-xdist:多线程运行
pytest-ordering:改变用例执行顺序
pytest-rerunfailures:失败用例重爬
allure-pytest:美
转载
2024-03-25 18:49:26
39阅读
pytest-xdist基本的介绍声明:在介绍pytest-xdist时,本人不讲任何原理,需要看原理的请移至官方:https://pypi.org/project/pytest-xdist/
当我们自动化测试用例非常多的时候, 一条条按顺序执行会非常慢,pytest-xdist的出现就是为了让自
动化测试用例可以分布式执行,从而节省自动化测试时间,pytest-xdist是属于进程级别的并发。
转载
2024-04-24 10:35:28
201阅读
4 内置 Fixture4.1 使用 tmpdir 和 tmpdir_factory内置的 tmpdir 和 tmpdir_factory 负责在测试开始运行前创建临时文件目录,并在测试结束后删除。如果测试代码要对文件进行读/写操作,那可以使用 tmpdir 或 tmpdir_factory 来创建文件或目录。单个测试使用 tmpdir,多个测试使用 tmpdir_factory。tmpdir 的
转载
2024-06-08 23:05:13
117阅读
一、假如项目中有测试用例1000条,一条测试用例执行需要一分钟,一个测试人员需要1000分钟才能完成一轮的回归测试。通常我们会用人力成本去换时间成本,加几个人一起执行,时间就会缩短,如果十个人一起执行只需要100分钟,这就是一种并行测试,分布式的场景。pytest-xdist是pytest分布式执行插件,可以多个CPU或主机执行,这款插件允许用户将测试并发执行(进程级并发),插件是动态动态决定测试
转载
2023-08-22 23:40:28
139阅读
运行多条用例方式def inc(x):
return x + 1
def test_answer():
assert inc(4) == 5
class TestDemo:
def test_demo01(self):
pass执行包下所有的用例:pytest/py.test [包名] 执行单独一个pytest模块:pytest 文件
转载
2024-03-21 20:18:12
407阅读
前言:实际项目中的用例数量会非常多,几百上千;如果采用单进程串行执行的话会非常耗费时间。假设每条用例耗时2s,1000条就需要2000s $\approx$ 33min;还要加上用例加载、测试前/后置套件等耗时;导致测试执行效率会相对低。想象一下如果开发改动一块代码,我们需要回归一下,这时候执行一下自动化用例需要花费大半个小时或者好几个小时的时间,这是我们无法容忍的。为了节省项目测试时间,需要多个
转载
2023-10-03 15:36:11
1238阅读
并发测试 当cases量很多时,运行时间也会变的很长,如果想缩短脚本运行的时长,
原创
2022-12-22 01:20:14
164阅读
pytest: 需要安装pytest和pytest-html(生成html测试报告) pip install pytest 和 pip install pytest-html 命名规则 Pytest单元测试中的类名和方法名必须是以test开头,执行中只能找到test开头的类和方法,比unittest更加严谨 unittest:Setup>> setupclass teardown te
实现各个项目的并发执行,同时也能保证每个项目也能实现单独运行
原创
2020-04-22 14:42:44
6602阅读
不管是UI自动化测试用例还是API的自动化测试用例,在编写的使用都需要注意每个测试用例执行的独立性,也就是说编写的每个测试用例都是互相不依赖的,这样就不会因为A执行失败了导致B也执行失败,具体参考API测试用例编写规范的文章。当编写的测试用例很多的时候,就需要考虑它的执行效率。在Pytest测试框架中提供了pytest-xdist可以并发执行测试用例,来提升测试用例的执行速度。通常的情况下,测试用例的执行都是依据一定的规则来按顺序进行执行,这样的结果是每次执行的时候有的资源就只能被一个测试用例占用,而达不.
原创
2021-08-16 20:02:33
1774阅读
python try异常处理
什么是异常
python异常捕获,在刚开始学的时候,经常会遇到两种报错信息:语法错误和执行的异常。
语法错误在执行的时候就会报错,同时控制端会告诉你错误所在的行;
但即便python程序语法是正确的,在运行它的时候,也有可能发生错误。比如请求的接口返回空,没有做判断直接拿这个变量进行下一步逻辑处理,就会出现代码异常。
大多数的异常都不会被程序处理,都以错误信息的形式展