pytest

yamlapi docker镜像

♀尐吖头ヾ 提交于 2020-07-29 06:19:42
一、目录结构: pip.conf文件: [global] index-url = https://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com requirements.txt文件: requests>= 2.23.0 ddt>= 1.4.1 PyMySQL>= 0.9.3 DBUtils>= 1.3 BeautifulReport>= 0.1.2 demjson>= 2.2.4 loguru>= 0.5.0 PyYAML>= 5.3.1 ruamel.yaml>= 0.16.10 pytest>= 5.4.2 pytest-html>= 2.1.1 allure-pytest>= 2.8.16 pytest-reportlog>= 0.1.1 pytest-assume>= 2.2.1 pytest-rerunfailures>= 9.0 pytest-sugar>= 0.9.3 pytest-timeout>= 1.3.4 pytest-parallel>= 0.1.0 psycopg2-binary== 2.8.5 Dockerfile文件: FROM python: 3.6.9 # 基础镜像 MAINTAINER yangjianliang < 526861348@qq

pytest文档39-参数化(parametrize)结合allure.title()生成不同标题报告

孤者浪人 提交于 2020-07-28 19:24:14
前言 pytest的参数化(parametrize)可以实现只需维护测试数据,就能生成不同的测试用例目的。可以在参数化的时候加 ids 参数对每个用例说明使用场景。 最终我们希望在 allure 报告上能详细的展示出每个用例的标题描述,这样才能更直观的知道每个用例是干什么的。 参数化parametrize 先看一个简单的pytest参数化案例演示test_a.py # test_a.py import pytest import allure # 作者:上海-悠悠 QQ交流群:779429633 def login(username, password): '''登录''' print("输入账号:%s" % username) print("输入密码:%s" % password) # 返回 return {"code": 0, "msg": "success!"} # 测试数据 test_datas = [ ({"username": "yoyo1", "password": "123456"}, "success!"), ({"username": "yoyo2", "password": "123456"}, "failed!"), ({"username": "yoyo3", "password": "123456"}, "success!"), ] @allure

2020年软件测试工程师需要学什么技能

安稳与你 提交于 2020-07-28 17:42:56
一、2020年软件测试行业的现状 2020年开年,一不小心,【新冠】黑天鹅从头上飘过,持续影响全国乃至全球的经济,软件行业公司也迎来了不少的冲击,那么一个值得打算入行软件测试行业,或者已经在软件测试行业耕耘多年的老司机来说,2020年软件测试行业,还值得入行吗?这个行业将来又将如何发展呢?下面我谈谈我个人的看法。 二、2020年软件测试行业的趋势 鉴于笔者从09年入行IT行业,经历了09年只有开发没有测试的阶段,经历了14年只要会基本的功能测试在一线就能薪资过万的阶段,经历了17年只要会一点自动化,会一点性能就能蒙骗过面试官的阶段,更经历了19年所有面试官对于求职者的要求逐步提高,开始思考这个求职者当前具备的技能是否值得培养,工作态度,技能背景是否能够快速满足岗位需求的阶段,那么2020年软件测试行业又将是一个怎样的趋势呢? 相信从10年的市场变化,不难猜出2020年技术薄弱的测试工程师会逐渐被淘汰出局. 一波测试工程师的失业潮是在所难免的 虽然笔者我也一直在呼吁身边的朋友赶紧脱离落后的测试技能, 赶紧走入前沿的技术领域,但是看到很多人还是在原地踏步,他们生活越来越艰难, 工作也是犹如鸡肋,行尸走肉,得过且过也是挺着急的。从主流的招聘网站也能看出来初级测试岗位在减少,但是高级测试工程师的需求反而越来越多,职位薪资也是越来越高, 由此看出测试行业在向正规化,国际化发展

Pytest03-pytest命令行参数

风格不统一 提交于 2020-07-28 03:48:46
目录 3.pytest命令行参数 3.1 pytest控制台信息详解 3.2 Pytest运行结果类型 3.3 Pytest命令行参数 3.3.1 --collect-only 3.3.2 -k Expression 3.3.3 -m MarkExpr 3.3.4 -x, --exitfirst 3.3.5 --maxfail=num 3.3.6 --lf --last-failed 3.3.7 --ff --failed-first 3.3.8 -v --verbose 3.3.9 -q --quiet 3.3.10 --tb=style 3.3.11 --durations=N 3.3.12 -h --help 3.pytest命令行参数 3.1 pytest控制台信息详解     通常在运行pytest之后,会出现如下所示的控制台信息: C:\Users\Surpass\Documents\PycharmProjects\PytestStudy\Lesson01>pytest test_01.py ==================test session starts ======================= platform win32 -- Python 3.7.6, pytest-5.4.2, py-1.8.1, pluggy-0.13.1 rootdir:

测试用例 setup 和 和 teardown

社会主义新天地 提交于 2020-07-27 09:56:15
前言   学过unittest的都知道里面用前置和后置setup呾teardown非常好用,在每次用例开始前呾结束后都去执行一次。当然迓有更高级一点的 setupClass 呾 teardownClass,需配合@classmethod 装饰器一起使用,在做 selenium 自动化的时候,它的效率尤为突然,可以叧启动一次浏览器执行多个用例。pytest 框架也有类似于 setup 和 teardown 的用法,并且不止这四个。简单演式几种。 用例运行级别   1、模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(setup_function/teardown_function)叧对函数用例生效(不在类中) 类级(setup_class/teardown_class)叧在类中前后运行一次(在类中)   setup/teardown 和unittest 里面的 setup/teardown 是一样的功能,setup_class 和 teardown_class 等价于 unittest 里面的setupClass 呾 teardownClass 从结果看出,运行的优先级:setup_class》setup_method》setup 》 用例》teardown》teardown_method》teardown_class  

软件测试面试题(2)

柔情痞子 提交于 2020-07-27 08:28:55
  经过前面总结的面试题,看到留言和私信都觉得还不错,这里安静在总结一些亲身经历的面试题 1、启动多个app同时运行用例怎么做?代码如何实现? 通过python进行对启动命令行appium进行封装,然后通过多线程的方法进行启动appium进行执行多台手机操作。具体代码: appium---多线程启动app(多台设备启动app) 2、unittest如何操作它的执行顺序 unittest本身执行是无序的,我们可以通过进行创建名称是进行判断执行顺序,也可以通过unittest中的TestSuite来进行添加执行的用例。具体操作: unittest---unittest多种加载用例方法 3、unittest中能否进行更改执行规则?不已test开头的方式? 我们如果仔细阅读过unittest的方法就可以发现,其实是可以进行在源码中修改的。 4、postman中的断言如何操作? postman的断言是通过javaScript来编写的,postman中有个Tests,我们可以在里面进行添加断言,也可以通过javaScript代码进行自己编写断言。具体操作: postman---postman增加断言 5、unittest的弊端? unittest目前不支持用例失败重跑,需要进行二次开发 6、通过学生,班级,科目,分数,学期这些你如何创建数据表? 这里可能就考察数据库的能力和业务逻辑流程了

聊聊 Python 代码覆盖率工具

寵の児 提交于 2020-07-25 10:54:56
点击上方“ AirPython ”,选择“ 加为星标 ” 第一时间关注 Python 技术干货! 1. 代码覆盖率 单元测试代码覆盖率作为一种度量方式,可以计算单元测试用例对于被测代码的覆盖程度,即:被执行的代码数量和代码总数量的比值 统计代码覆盖率 ,经常在单元测试后再进行,可以为测试结果提供评判依据 Python 项目最常使用的代码覆盖率统计工具就是: C overage 2. Coverage Coverage 是用于统计 Python 代码覆盖率的工具,不仅支持分支覆盖率统计,生成 HTML 格式的统计报告,而且可以集成到 Jenkins 中使用 安装 Coverage 依赖同样是使用 pip 安装 # 安装 Coverage 依赖 pip3 install coverage Coverage 官方提供了 2 种方式,用于统计代码覆盖率,分别是: 1、Coverage 命令行 2、Coverage API 更详细的介绍可以参考官方文档: https://coverage.readthedocs.io/en/latest/ 3. 实战一下 首先,用 Python 编写一段简单被测代码,如下: # 被测代码 # main.py def get_level (cource) : """ 自定义的方法 :param cource:成绩 :return: """ if cource

pytest——pycharm中右击运行(run)没有问题,在terminal中运行pytest报错:E ModuleNotFoundError: No module named

时光毁灭记忆、已成空白 提交于 2020-07-24 18:46:59
参考了这个解决办法:https://blog.csdn.net/qq_36829091/article/details/82180866 我的是Windows,linux的和Windows的解决办法有些不一样,但也是大同小异,需要改一下环境变量 这是我的文件目录 需要在test_calc.py中导入python_math_demo里的calc,在pycharm中右击运行没有任何问题。 在terminal中运行pytest报错 如果是pycharm的错误或者是导入的错误,不可能一个能运行成功一个运行错误。所以我猜是pycharm的IDE的运行机制和terminal的运行机制不一样才导致这种情况 参考资料所得:https://blog.csdn.net/qq_36829091/article/details/82180866 Python在启动解释器(Interpreter)时 不仅会导入环境变量中 sys.path 发现的模块,还会导入当前工作目录下的模块 。 具体什么事sys.path和当前工作模块,可参考上面的链接。 通过在文件头加上输出环境变量,然后再terminal中运行pytest。运行结果的第一个路径就是当前路径 解决办法: 第一种方法:是在环境变量中加入当前模块路径。(但由于我不喜欢在环境变量中加很多东西,所以就省略了这步) 第二种方法:以下两个命令其中一个就可

Pytest01-环境搭建

烈酒焚心 提交于 2020-07-23 20:14:34
目录 1.环境搭建 1.1 运行环境 1.2 安装pytest 1.3 在PyCharm中设置默认单元测试框架为Pytest 1.4 创建示例测试 1.5 运行测试 1.环境搭建 1.1 运行环境     本机运行环境如下所示: Python: 3.7.6 OS:Windows 10 x64 IDE:PyCharm 2020.1 Pytest:5.4.2 1.2 安装pytest 1、在命令行窗口中执行以下命令 pip install -U pytest 2、在命令行窗口执行以下命令,验证是否安装成功 1.方法一 pytest --version This is pytest version 5.4.2, imported from d:\program files\python\lib\site-packages\pytest\__init__.py 2.方法二 >>> import pytest >>> print(pytest.__version__) 5.4.2 1.3 在PyCharm中设置默认单元测试框架为Pytest File -> Setting... -> Tools -> Python Integrated Tools 在右侧选项中找到 Testing ,修改Default test runner为pytest,详细如下图所示: 1.4 创建示例测试

How to use monkeypatch in a “setup” method for unit tests using pytest?

守給你的承諾、 提交于 2020-07-18 05:08:50
问题 I am attempting to mock out a utility class (In this case the python logger utility) in a unit test. While I know how to do it using monkeypatch on a per test level, I was hoping I could simply do it as part of the setup/globally in some way. Here is what I am hoping I can do (but I am getting errors): import logging ... def setup(self, monkeypatch): class fake_logger(level): def __init__(self, val): pass def setLevel(self, level): # Do something def mock_logger(level): return fake_logger