自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黎晟 的博客

朝朝千晓晟,自在也孤独。

  • 博客(45)
  • 收藏
  • 关注

原创 Python-错误和异常处理

Python的错误主要分为两类:语法错误 和 异常语法错误错误又称解析错误,是学习 Python 时最常见的错误可以看到使用Pycharm时,会自动标注语法有错误从执行结果也可以看到会报错:异常参考链接:https://www.cnblogs.com/hls-code/p/14865380.html捕获异常当发生异常时,我们就需要对异常进行捕获,然后进行相应的处理python的异常捕获常用结构,把可能发生错误的语句放在模块里,用来处理异常,每一个,都必须至少对应一个python异常相

2022-06-15 23:40:13 608 1

原创 Python-第三方库管理与虚拟环境

Python的第三方库Python提供了大量的第三方库来给咱们使用,这也是Python的强大之处三方库官网链接可以直接搜索需要的Python三方库来使用包管理工具pippip是Python的包管理工具,可以很方便的安装和管理第三方库(包)。类似于PHP中Composer,或者Nodejs中的npm,以及Linux中的yumpip简单使用可以直接使用 pip install 包名来安装指定三方库例如安装 requests 库:pip install requestspip常用命令帮助

2022-04-29 17:58:15 3948 1

原创 Python学习笔记-模块与包

前言模块和包是Python中的两个重要概念模块和包的定义模块(module)官方定义:Python把各种定义存入一个文件,在脚本或解释器的交互式实例中使用。这个文件就是模块简单理解,一个 **.py** 文件就是一个模块模块又分为系统模块(也叫标准模块)和自定义模块系统模块,就是系统自带的模块,提供一些常用的定义,例如time、json、sys等自定义模块,就是按自己定义的模块,用来给其他脚本导入使用,上图的 login.py ,run.py等就是一个自定义模块模块可以通过 impor

2022-04-29 14:14:39 928

原创 Linux 学习笔记(三)chown和chmod命令使用

chown和chmod命令使用黎晟 2020年12月29日一、

2022-03-09 18:10:59 589

原创 Pytest学习笔记(25)-重复执行用例插件 pytest-repeat

前言日常业务测试过程中,经常会遇到偶现的bug,需要重复操作来复现bug自动化测试同样如此,也会需要重复执行用例,来确定用例的稳定性、成功性和复现偶现的bugpytest-repeat 是 pytest 的一个插件,可以重复的执行单个测试或多个测试,也可以自定义重复执行的次数官方文档:https://pypi.org/project/pytest-repeat/前提条件Python 2.7、3.5+ 或 PyPypytest 3.6 或更高版本插件安装pip3 in

2022-03-02 17:43:31 891

原创 Pytest学习笔记(24)-使用 pytest-xdist 如何保证 scope=session 的 fixture 在多进程运行时仍然只运行一次

背景使用 pytest-xdist 分布式插件可以加快运行,充分利用机器多核 CPU 的优势,也提高了资源利用率将常用功能放到 fixture,可以提高复用性和维护性做接口自动化测试的时候,通常我们会将登录接口放到 fixture 里面,并且 scope 会设置为 session,让他全局只运行一次但是当使用 pytest-xdist 的时候,scope=session 的 fixture 无法保证只运行一次,官方也通报了这一问题官方介绍pytest-xdist 的设计使每个工作进程将执行

2022-03-01 19:09:58 2187 3

原创 Pytest学习笔记(23)-pytest-xdist的原理和流程

pytest-xdist的原理xdist通过产生一个或多个由master控制的workers来工作每个workers负责执行完整的测试收集,然后按照master的指示运行测试master本身不执行任何测试pytest-xdist的流程第一步:创建workermaster在测试会话开始时产生一个或多个workersmaster和worker节点之间的通信,使用execnet及其网关为workers执行代码的,可能是远程的或本地的机器第二步:收集测试项用例每个worker本身都是一

2022-02-28 20:43:12 788

原创 Pytest学习笔记(22)-分布式执行pytest-xdist插件

前言在日常功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间缩短一半,如果有10个小伙伴,那么执行时间就会变成十分之一,大大节省了测试时间为了节省项目测试时间,10个测试同时并行测试,这就是分布式执行同样道理,当我们自动化测试用例非常多的时候, 一条条按顺序执行会非常慢,pytest-xdist的出现就是为了让自动化测试用例可以分布式执行,从而大大节省自动化测试执行

2022-02-28 16:54:13 1300

原创 Pytest学习笔记(21)-使用allure.dynamic动态生成标题、描述

前言前面提到,可以使用@allure.title 和 @allure.description 给测试用例添加标题和描述在用例里面也可以动态更新标题和详情使用allure.dynamic.description 和 allure.dynamic.title 实现源码class Dynamic(object): @staticmethod def title(test_title): plugin_manager.hook.add_title(test_title

2022-02-26 19:09:40 1533

原创 Pytest学习笔记(20)-参数化parametrize结合allure.title()动态生成用例标题

前言使用参数化,allure报告默认的用例标题为用例名称,这样可读性较差参数化使用ids,也并不能完全解决问题(还是会保留用例名称)使用allure.title()装饰器写死标题的方式,用例维护成本较高所以希望能把parametrize参数化数据驱动结合title使用,下面会以登录用例为例来详细介绍参数化默认的标题代码data_login = [ {"username": "name1", "pwd": "pwd1"}, {"username": "name2", "pwd

2022-02-25 18:58:20 2100 2

原创 Pytest学习笔记(19)-allure命令行参数

本文主要介绍allure支持的一些命令行参数的用法查看参数帮助文档安装allure后,可以通过allure -h命令查看allure -hallure命令语法allure [options] [command] [command options]options 列表Options: --help Print commandline help. # 打印命令行帮助文档 -q, --quiet Switch on the quiet mode. # 切换至安静模

2022-02-24 18:59:58 1162

原创 Pytest学习笔记(18)-allure之清空测试报告

前言使用allure生成测试报告,当报告存放路径相同时,报告数据是会累加,会导致测试报告内展示了之前运行的用例情况同理,当你的用例名称修改后,再次执行后,也会保留上一次的用例运行记录不同用例文件,报告路径相同准备 test_report_1.py 和 test_report_2.py 两个用例文件,内容如下:#!/usr/bin/env python3# -*- coding:utf-8 -*-""" __File__ = test_report_1.py _

2022-02-23 16:31:31 1793

原创 Pytest学习笔记(17)-allure之@allure.suite()

@allure.suite()、@allure.parent_suite和@allure.sub_suiteallure也提供了测试套件的功能,但是因为已有epic, feature, story,所以不常有,本文进行简单了解。源码def suite(suite_name): return label(LabelType.SUITE, suite_name)def parent_suite(parent_suite_name): return label(LabelType.PA

2022-02-23 14:58:09 1129

原创 Pytest学习笔记(16)-allure之@allure.severity()

@allure.severity()写测试用例时需要划分用例等级,allure同样提供了划分等级的功能,且可以展示到测试报告内老规矩上源码# allure.pyfrom allure_commons._allure import severityfrom allure_commons.types import Severity as severity_level# _allure.pydef severity(severity_level): return label(LabelTy

2022-02-22 21:43:51 1102

原创 Pytest学习笔记(15)-allure之@allure.epic()、@allure.feature()和@allure.story()

@allure.epic()、@allure.feature()和@allure.story()本次主要介绍如何使用allure来灵活的标记测试。Pytest 通过使用标记装饰器@pytest.mark来实现,但是不会展示到测试报告内Allure 则提供了 3 种类型的标记装饰器来标记测试,并且可以同步展示到测试报告内BDD风格的标签严重程度的标签自定义的标签BDD风格的标签**@allure.epic:**敏捷里面的概念,定义史诗,相当于module级的标签**@allure

2022-02-18 18:37:46 7772

原创 Python(3)生成指定长度的随机字符串

需求:生成包含大小写字母数字下划线的指定长度的字符串。方法1代码#!/usr/bin/env python3# -*- coding:utf-8 -*-""" __File__ = demo_random.py __Project__= _JAuto-Interface __Time__ = 2022-02-16 17:06:46 __Author__ = 黎晟"""import random# 先定义一个目标子串GRAMMAR = "ABCDE

2022-02-16 17:45:08 2314

原创 Pytest学习笔记(14)-allure之@allure.link()、@allure.issue()和@allure.testcase()

@allure.link()、@allure.issue()和@allure.testcase()本次主要介绍如何将将测试报告与bug管理工具或测试管理系统关联,通过使用@allure.link、@allure.issue、@allure.testcase实现。先看下源码最上游的源码def link(url, link_type=LinkType.LINK, name=None): return safely(plugin_manager.hook.decorate_as_link(url=

2022-02-16 16:29:18 1474

原创 Pytest学习笔记(13)-allure之allure.description()和@allure.title()

allure.description() 和@allure.title()前言前面介绍了allure的step和attach功能,本次来看下allure的另外两个功能:@allure.description()@allure.title()@allure.description()为测试用例添加详细描述,并展示到测试报告内,可以提高测试报告的可读性,使报告更加直观,通俗易懂语法主要有三种语法,如下:在测试用例下使用""“xxxx”""添加描述(添加普通描述-方法1)使用@all

2022-02-15 20:57:16 1289

原创 Pytest学习笔记(12)-allure特性·@allure.step()和allure.attach

allure.step()和allure.attach前言allure除了支持常用的pytest功能外( xfails、fixture、skips和skipif、parametrize),自身还有一些强大实用的功能。本次主要介绍step和attach功能,可以设置测试步骤及添加报告中的附件。@allure.step()Allure 报告的最重要的方面是它允许对每个测试用例的调用进行非常详细的步骤说明通过@allure.step装饰器来实现可以存储在您的测试之外,并在需要时仅导入Step 方

2022-02-14 20:42:11 3005 1

原创 Pytest学习笔记(11)-allure特性·环境配置和用例分类

前言pytest自动化测试中,要想报告内容丰富,优雅和可读性强,就需要与allure结合使用。allure报告有很多内置的特性,这些特性主要以配置文件、装饰器、函数等的方式使用,使我们的报告更加直观、详细。Environment环境变量,可以读取环境变量配置文件,并直观的展示到测试报告内。可以说是附加的功能,并没有什么实际效果,看需求而定即可。注意:默认无此功能如何添加环境变量通过environment.properties文件添加#environment.properties文件Bro

2022-02-12 15:49:13 1281

原创 Pytest学习笔记(10)-测试报告

测试报告前言在pytest中,如何生成html测试报告呢,pytest提供了pytest-html插件,可以帮助我们生成测试报告,当然,如果希望生成更加精美的测试报告,我们还可以使用allure生成报告,下面详细看看如何实现pytest-html插件安装pytest-html使用pip命令安装pip install pytest-html举个????使用方法很简单,在测试用例的目录下执行命令 pytest --html=reportname.html 即可执行效果如下:合并css

2022-02-10 18:22:29 629

原创 Pytest学习笔记(9)-失败重跑

失败重跑前言在进行自动化测试的过程中,我们一定会有这样的需求:希望失败的用例可以自动重跑在pytest中,提供了pytest-rerunfailures插件可以实现自动重跑的效果前提条件Python 3.6,最高 3.10,或 PyPy3pytest 5.3 或更高版本插件安装pip3 install pytest-rerunfailures -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com使用前了解命

2022-02-10 18:20:37 4028

原创 Pytest学习笔记(8)-Skip和Xfail

skip和xfail前言在实际使用中,经常会遇到需要跳过某些测试用例的情况,pytest提供了skip和ifskip来跳过测试skip标记在测试函数中使用示例:@pytest.mark.skip(reason=“跳过的原因,会在执行结果中打印”),举个????:import pytestdef test_1(): print("测试用例1")@pytest.mark.skip(reason="没写完,不执行此用例")def test_2(): print("测试用例2"

2022-02-10 18:16:16 936

原创 Pytest学习笔记(7)-参数化

参数化前言我们在实际自动化测试中,某些测试用例是无法通过一组测试数据来达到验证效果的,所以需要通过参数化来传递多组数据在unittest中,我们可以使用第三方库parameterized来对数据进行参数化,从而实现数据驱动测试,也可以使用DDT进行数据驱动而在pytest中,也提供了功能强大的@pytest.mark.parametrize装饰器来实现数据参数化Pytest参数化的方式pytest有三种传参方式:@pytest.mark.parametrize() 通过装饰器方式进行参数化(

2022-02-10 18:03:13 716

原创 Pytest学习笔记(6)-配置文件pytest.ini

配置文件pytest.ini前言很多 pytest settings 可以设置在 配置文件 ,它通常位于存储库的根目录或测试文件夹中pytest.ini 文件优先于其他文件,即使是空的pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行常用配置项markers它的作用是做注册标记,防止拼写错误。比如把@pytest.mark.smoke拼成@pytest.mark.somke,默认情况下。这不会引起程序错误。pytes

2022-02-09 22:21:46 1662

原创 Pytest学习笔记(5)-断言Assert和Assume

断言assert和assume前言pytest作为单元测试框架,自然少不了断言功能,在unittest中有丰富的断言方法,比如assertEqual()、assertIn()、assertTrue()、assertIs()等等,而在pytest中,并没有提供特殊的断言方法,而是直接使用python自带的关键字assert来进行断言操作。常用断言Pytest里的断言实际上就是Python中的assert断言方法,常用断言方法如下:assert xx :判断 xx 为真assert not xx

2022-02-08 20:29:15 2298

原创 Pytest学习笔记(4)-Fixture装置

Fixture装置前言传统的前后置处理方法,对处理前后置的场景是有一定的局限性。所以才引入fixture装饰器函数,fixture是pytest的核心功能,也是亮点功能,它可以灵活的处理很多特殊的场景fixture用途用于执行测试前后的初始化操作,比如打开浏览器、准备测试数据、清除之前的测试数据等等用于测试用例的前置条件,比如UI自动化的登录操作,读取config参数等用于测试用例之间的参数和数据传递fixture优势firture相对于unittest中的setup和teardown来

2022-02-08 20:26:02 671

原创 Pytest学习笔记(3)-Setup和Teardown

setup和teardown前言在做自动化的时候,常常有这样的诉求:用例执行前,需要重新启动一次浏览器用例执行结束时,需要清除测试数据在unittest中,我们可以使用 setUp() 和 tearDown() 两个方法来实现以上需求,其中 setUp() 方法用于初始化测试固件;而 tearDown() 方法用于销毁测试固件。程序会在运行每个测试用例(以 test_ 开头的方法)之前自动执行 setUp() 方法来初始化测试固件,井在每个测试用例(以 test_ 开头的方法)运行完成之后自动

2022-02-08 20:04:19 736

原创 Pytest学习笔记(2)-常用命令行参数

常用命令行参数所有命令行标志都可以通过运行 pytest --help 查看:-v输出用例更加详细的执行信息,比如用例所在的文件及用例名称等,执行pytest -v test_class.py-s输出用例中的调式信息,比如print的打印信息等,修改test_class.py如下,执行pytest -vs test_class.pyclass TestClass: def test_one(self): x = "this" print("测试调试信息

2022-02-08 19:57:40 521

原创 Pytest学习笔记(1)-快速入门

快速入门安装pytest终端或者命令行运行以下命令:pip install -U pytest检查是否安装了正确的版本:pytest --version 显示可用的内置函数参数:pytest --fixtures显示pytest命令行插件帮助信息:pytest --help快速开始1.创建测试函数/类Pytest 使用 Python 的 assert 进行条件判断,最简单的测试函数如:# content of test_class.pyclass TestClass:

2022-02-08 19:38:12 547

原创 Python(2)string.Template(template)方法替换字符串踩坑

string.Template(template)方法替换字符串踩坑黎晟 2021年4月28日 10:431、string.Template(template)官方文档介绍该构造器接受一个参数作为模板字符串。substitute(mapping={}, /, **kwds)执行模板替换,返回一个新字符串。 mapping 为任意字典类对象,其中的键将匹配模板中的占位符。 或者你也可以提供一组关键字参数,其中的关键字即对应占位符。 当同时给出 mapping 和 kwds 并且存在重复时,则以

2021-04-28 10:56:44 1906 4

原创 Linux 踩坑:PermissionError: [Errno 13] Permission denied: ‘xxxx.py‘

PermissionError: [Errno 13] Permission denied: ‘xxxx.py’黎晟 2020年12月29日 14:581、问题描述linux下Python3 执行py文件报权限错误:2、问题排查1、查看文件所属用户发现文件所属和执行的用户一致,排除此原因2、考虑用户权限不足a、切换root用户执行,执行成功b、考虑用户对文件无权限尝试修改文件所属用户及组chown -R username:groupname dir 3、重新执行脚本,执

2020-12-29 15:04:54 5169

原创 rpm -Uvh https://xxxx.rpm 提示连接失败问题解决

rpm -Uvh https://xxxx.rpm提示连接失败解决黎晟 2020年12月28日 20:241、查询IP地址通过https://www.ipaddress.com/查询对应url ip地址:2、修改hosts 文件,追加一下内容sudo vi /etc/hosts45.55.104.9(ip) webtatic.com(可自定义)3、重新执行命令,访问对应地址成功...

2020-12-28 20:24:21 1767

原创 Linux学习笔记(一 ) sed和firewalld命令使用

sedfindxargsfirewalld

2020-12-28 20:05:54 140

原创 Python(1)遍历文件目录并简单筛选文件

遍历文件目录并做简单筛选

2020-12-28 09:01:45 4220 1

翻译 Jenkins环境变量翻译(20201217)

Jenkins环境变量翻译以下变量可用于shell脚本BRANCH_NAME正在构建的分支的名称这将设置为正在构建的分支的名称,例如,如果您希望从主分支而不是从功能分支部署到生产;如果对应于某种更改请求,则名称通常是任意的(请参阅change_ID和change_TARGET)CHANGE_ID这将被设置为变更ID,如pull请求编号(如果支持的话);否则取消设置。CHANGE_URL如果支持,则将其设置为更改URL;否则取消设置。CHANGE_TITLE如果支持的话,这将被设置为变更的

2020-12-17 12:05:47 425

原创 北纬36°2 and 东经120°0(二)

简言:2020年10月24日,始,记录黎晟的一些所读所感……也想给大家分享一些平凡的见闻感触,大道至简。正文:时间线:2020年12月5日11:39……接第一篇,不间断更新;全是文字也没怎么布局,还请多多见谅。首先给大家安利一个还算不错的gzh:GPA+9、真正的喜欢是一种能力,而非情绪今天来聊一聊喜欢这个词,当然我指的是兴趣方面的喜欢而不是男女之间的那种~老套路,先来说个栗子:讲的时一个gzh作家,喜欢玩滑板,滑坏了二十多块滑板,显而易见,他(用他代指之前提到的作家了,也不知道用什么其他

2020-12-05 13:02:01 188

转载 转:测试工程师的面试总结

最近在准备面试,看到一篇很用心的文章,分享给大家。(是java技术栈方向的)链接:测试工程师的面试总结测试的面试重点分为两大部分:技术,项目扩充一下:技术的一些注意点,项目上的一些处理方式(有些还会有一些沟通上的小技巧),可能不会写的特别详细,但点我都会点到,后续会再继续补充(近3万字的长文预警,希望能帮助到各位互联网的孩子们)那么直接上货,希望能帮助到各位同行,或者不是同行却也能激发起你们的灵感的伙伴们~一.黑盒测试方法(可能会问等价类的分类,等价类和边界值是最重要的:1、等价类划分:(有效

2020-11-14 17:21:55 3834

原创 常见HTTP状态码(整理贴)

常见HTTP状态码简单整理下常见的http状态码:200 - 服务器成功返回网页201 - 服务器成功创建了新的资源400 - 请求报文/参数错误404 - 请求的网页不存在502 - 错误网关,无效响应503 - 服务不可用详细介绍请看下文~详解:1XX Informational(请求正在处理)信息响应:100 Continue 继续这个临时响应表明,迄今为止的所有内容都是可行的,客户端应该继续请求,如果已经完成,则忽略它。101 Switch

2020-11-14 14:40:12 328

原创 北纬36°2 and 东经120°0(一)

简介:2020年10月24日,始,记录黎晟的一些所读所感……朝朝千晓晟,自在也孤独。

2020-10-24 11:01:40 1009 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除