自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SitVen

成长

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

原创 Python+Requests之配置代理

通过Python写Requests接口测试脚本时会遇到一些请求异常的情况,每次把请求信息打印出来比较繁琐, 通过使用抓包工具可以很有效的协助定位问题;抓包需要设置代理, 开启代理后不论是通过pip安装第三方包还是通过Requests发HTTP请求都会报错ValueError: check_hostname requires server_hostname 如下图:代理设置Requests提供的了proxies参数用于配置代理,如下代码配置的fiddler抓包代理:import reque.

2021-09-21 08:04:39 2909

原创 Pytest框架之 - Hooks函数统计测试结果

SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。SMTP方法封装#!/usr/bin/python3# coding: utf-8# Author: sitVenimport osimport smtplibfrom email import encodersfrom email.header impo

2021-09-21 08:04:01 254

原创 Pytest框架之 - Hooks函数统计测试结果

用例执行完成后我们希望能获取到执行结果,这样方便我们快速统计用例的执行情况也可以把获取到的结果当成总结报告,发邮件或者钉钉群通知的时候可以先统计测试结果,再加上allure报告。这样子测试结果就很直观pytest_terminal_summary关于TerminalReporter类可以在_pytest.terminal中查看到from _pytest import terminalpytest_terminal_summary(terminalreporter, exitstatus,

2021-09-21 08:03:05 882

原创 Pytest框架之 - 异常处理

在断言一些代码块或者函数时会引发意料之中的异常或者其他失败的异常导致程序无法运行时,使用raises捕获匹配到的异常可以让代码继续运行Python的异常处理:try...except...else...finally...try: print("正常的操作")except TypeError: print("发生TypeError异常,执行这块代码") raise # 并抛出这个异常except: print("发生未知异常,执行这块代码")

2021-09-21 07:59:35 3591

原创 Ubuntu部署tomcat

安装tomcat需要有Java环境,需要先安装jdk,可以参考Ubuntu部署Jenkins其中有步骤介绍1.tomcat官网下载对应linux压缩包2. 将下载的tomcat压缩包放在你安装的文件夹下,我放置在/usr/share/tomcat目录下3. 解压tomcat压缩包到当前路径tar -xzvf apache-tomcat-9.0.53.tar.gz4. 给bin目录下添加权限chmod 777 -R apache-tomcat-9.0.53/bin5. ..

2021-09-21 07:55:28 939

原创 Django - 路由配置

路由简单的来说就是根据用户请求的URL链接来判断对应的处理程序, 并返回处理结果, 也就是URL与Django的视图建立映射关系,Django的根路由文件在setting.py文件中指定ROOT_URLCONF = 'demo.urls'Django1.x版本url()方法:普通路径和正则路径均可使用,需要自己手动添加正则首位限制符号from django.conf.urls import urlfrom . import viewsurlpatterns = [ # 普通

2021-09-21 07:52:56 1432

原创 Pytest框架之 - Allure特性之定制测试报告

Pytest支持使用@allure的一些方法修饰测试用例, 使测试用例在allure报告中能够更加详细的显示测试过程定制结果展示@allure.epic:敏捷里面的概念,定义史诗; 下层是[email protected]:功能点的描述,理解成模块; 下层是[email protected]:故事; 下层是[email protected]:用例标题; 最底层epic、feature、story和title示例#!/usr/bin/python...

2020-12-26 16:59:32 1121

原创 Pytest框架之 - Allure特性之测试用例优先级

测试用例会分优先级,同样allure也提供用例级别,在 allure 报告可以清晰看到不同级别用例的缺陷数量等级class Severity(str, Enum): BLOCKER = 'blocker' # blocker:阻塞缺陷(功能未实现,无法下一步) CRITICAL = 'critical' # critical:严重缺陷(功能点缺失) NORMAL = 'normal' # normal: 一般缺陷(边界情况,格式错误).

2020-12-26 12:13:31 1204 3

原创 Jenkins构建后展示Allure测试报告

上一篇介绍了通过Pytest生成Allure测试报告,这篇主要介绍Ubuntu通过Jenkins构建Python+Pytest+Requests+Allure自动化项目后展示Allure测试报告环境准备第一步、Jenkins安装Allure插件1. 通过下载Allure插件到本地,进入Jenkins - 系统管理 - 插件管理 - 高级 -上传插件进行安装2. Jenkins - 系统管理 - 插件管理 - 可选插件 -Allure第二步、Jenkins全局工具配置JDK...

2020-12-13 21:17:34 2267 2

原创 Pytest框架之 - allure生成漂亮的HTML图形测试报告

官网介绍1. Allure Framework是一种灵活的轻量级多语言测试报告工具,不仅可以以简洁的Web报告形式非常简洁地显示已测试的内容,也允许参与开发过程的每个人从日常测试中提取最大程度的有用信息2. 从开发/质量保证的角度来看,Allure报告可以缩短常见缺陷的生命周期:可以将测试失败划分为bug和损坏的测试,还可以配置log,step,fixture,attachments,timings,历史记录以及与TMS的集成以及Bug跟踪系统,因此负责任的开发人员和测试人员将掌握所有信息3. 从

2020-12-13 21:08:27 956

原创 Pytest框架之 - 多进程插件pytest-xdist原理与流程

pytest-xdist的分布式类似于一主多从的结构;master机负责下发命令控制slave机,slave机根据master机的命令执行特定测试任务, 在xdist中主是master从是workers分布式原理xdist会产生一个或多个workers,workers都通过master来控制每个worker负责执行完整的测试用例集,然后按照master的要求运行测试,而master机不执行测试任务分布式流程一、创建worker1. master会在总测试会话(test sessi..

2020-12-13 21:02:38 2218 1

原创 Pytest框架之 - conftest.py

conftest.py是什么? 可以理解成专门存放fixture的配置文件,单独管理一些全局的fixture运用场景自动化测试过程中所有用例都需要用登录功能来作为前置操作, 那就可以把登录功能通过fixture写到conftest.py, 全局调用注意事项 1. pytest会默认读取conftest.py里面的所有fixture 2. conftest.py 文件名称是固定的,不能修改 3. conftest.py只对该目录下的测试用例与子目录中的测试用例生效 4. 不同目录可.

2020-11-29 10:25:13 253

原创 Pytest框架之 - 参数化

自动化测试中一个测试用例对应一个测试点, 通常一组测试数据无法完全覆盖所有测试范围, 所以需要参数化来传递多组数据。Pytest的参数化有两种实现方式pytest.fixturefixture的参数params可以实现参数化的参数params:list类型,提供参数数据(参数化),供调用标记方法的函数使用参数ids:配合params参数使用的, 如果没有设置params参数,那么ids毫无意义; ids参数是给每一项params参数设置自定义名称用的; params参数值包含的列表有多少项值

2020-11-27 22:00:30 311

原创 Pytest框架之 - xfail标记用例为预期失败

pytes.xfail()在测试用例"中"调用pytes.xfail()方法,可以选择传入reason参数表示原因, 如下代码在测试用例中标记用例为xfail#!/usr/bin/python3# coding=utf-8# Author: 文import pytestclass Test_Two(): def test_01(self): print("===========> test_01 start") pytest.xfail(re

2020-11-27 21:59:54 377

原创 Pytest框架之 - skip跳过测试用例

自动化测试过程中, 经常会遇到功能阻塞, 功能未实现和环境等一系列外部因素问题导致的一些用例执行不了, 如果我们注释掉或删除掉, 后面可能还要进行恢复操作, 这时我们就可以用到跳过用例Pytest存在两个跳过测试的方法:skip和skipif (注:跳过的用例测试结果标识为s)skipskip方法为无条件跳过测试用例(使用方法:@pytest.mark.skip)# <------- test_three.py ------->#!/usr/bin/python3# c.

2020-11-27 21:59:21 1101

原创 Pytest框架之 - fixture

上篇讲了预处理方法setup和teardown可以实现在执行用例前或结束后加入一些操作, 但这种都是针对整个脚本全局生效的, 如果只是几个特定的用例需要, Pytest的fixture修饰器时用来标记固定的工厂函数,在其他函数、模块、类或整个工程调用它时会被激活并优先执行,通常会被用于完成预置处理和重复操作fixture优势1. 命名方式灵活,不局限于setup和teardown这几个命名2. conftest.py 配置里可以实现数据共享,不需要import就能自动找到fixture3.

2020-11-27 21:58:43 203

原创 Pytest框架之 - 预处理方法setup和teardown

说明Python单元测试框架unittest有两个前置方法和两个后置方法, 分别是setup、setupClass、teardown和 teardownClass预处理方法Pytest也贴心的提供了类似的方法, 一共有十种模块级别:setup_module、teardown_module — 每个.py文件前后执行一次函数级别:setup_function、teardown_function — 每个不在类中的函数前后执行一次类级别:setup_class、tear...

2020-11-27 21:58:13 374

原创 Pytest框架之 - 配置文件pyetst.ini

Pytest里面有些文件是非test文件:1. pytest.ini:Pytest的主配置文件, 可以改变Pytest的默认行为(放在项目根目录下,不要乱放,不要改其他名字)2. conftest.py:测试用例的一些fixture配置说明Pytest的配置文件可以改变Pytest的运行方式, 它是一个固定的文件 - pytest.ini, Pytest启动会读取配置信息按指定的方式运行pytest.ini配置项[pytest]addopts = -s --rer

2020-11-27 21:57:34 343

原创 Pytest框架之 - 常用插件

常用插件Pytest提供了很多功能插件,插件列表网址包含很多插件包,大家可依据工作的需求选择使用, 这边介绍三款常用插件多CPU运行Case插件 -pytest-xdist当cases量很多时,运行时间也会变的很长,如果想缩短脚本运行的时长,就可以用多进程来运行。插件安装如下:pip install -U pytest-xdist自定义进程数运行测试用例:-n=auto(自动检测到系统的CPU核数) -n=N(指定运行的CPU核数为N) .........

2020-11-27 21:56:56 351

原创 Pytest框架之 - 安装与命令行参数

目前Python有两种纯测试的测试框架:Pytest和unittestunittest应该是Python的老框架, 广为人知, 很多人都用来做自动化测试, 无论UI还是接口Pytest是基于unittest开发的另一款更高级更好用的单元测试框架,逼格高于unittest, 功能非常成熟且非常全,主要特点:1. 简单灵活容易上手,文档丰富有很多实例可以参考2. 支持参数化3. 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试,接口自动化测试.

2020-11-27 21:56:28 255 2

原创 Python+selenium 写入数据到excel文件

安装xlwt和xlutilsxlwt用来写数据到excel文件 xlutils复制excel中旧表数据到新表pip install xlwtpip install xlutils实现思路 1. 写入数据的excel文件不存在通过xlwt创建文件和定义excel表名 2. 写入数据的excel文件存在则通过xlrd打开并定位第一个表并获取其数据总行数 3. 通过xlutils.copy的copy方法复制旧数据并重新保存到新表 4. 获取转化后工作簿...

2020-10-16 23:21:56 1935 2

原创 Jenkins自动化测试构建后邮件通知

完成基于Jenkins的持续集成部署后,自动化测试执行后,测试结果需要通知到相关人员,除了钉钉通知外我们还可以通过Email通知到对应负责人,这里记录一下测试结果通过Jenkins邮件通知的配置与部署安装插件Email Extension Plugin方法1:进入Jenkins-系统管理--插件管理-可选插件,输入Email Extension Plugin搜索勾选直接安装插件方法2: 进入Jenkins插件下载email-ext与其依赖插件,进入Jenkins-系统管理--插件管理-高级-上.

2020-10-13 22:43:29 1577

原创 Python+selenium 自动化测试报告显示异常截图

由于HTMLTestRunner没有展示截图的功能,所以在基于UI的自动化测试报告中不能展示截图,就让整个报告显得不直观模板代码代码仓库viewHtmlReport报告截图项目结构viewHtmlReport|___common|___|___globalparam.py 定义全局路径|___|___HTMLReport.py html测试模块|___|___log.py 日志模块|___report|___|

2020-09-23 22:53:21 900 2

原创 Python+selenium 操作下拉框和单复选框

选中状态下拉框、单选框和复选框选中状态判断可以通过is_selected()和expected_conditions下的element_to_be_selected()方法方法,is_selected()返回结果为布尔值,element_to_be_selected()与显式等待组合使用不满足则抛出异常is_selected()方法driver.find_element_by_xpath("//input[@id='select']").is_selected()element_t..

2020-09-18 22:07:19 1340 2

原创 Python+requests之beautifulsoup4解析html

Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库, 它能够通过你喜欢的转换器实现惯用的文档导航, 查找修改文档html解析器下表列出了主要的html解析器,以及它们的优缺点解析器 使用方法 优势 劣势 Python标准库 BeautifulSoup(markup,"html.parser") 1. Python的内置标准库 2. 执行速度适中 3. 文档容错能力...

2020-09-13 13:32:06 550

原创 Python+requests之base64与image转换

做接口自动化过程, 遇到需要把image转换base64格式上传的接口,Python的bs4模块就能解决所述问题image转换base64# image转换成base64并加上 前缀data:image/jpeg;base64,def image_to_base64(filename, path="E:\\script", **kwargs): """ :param filename: image文件名 :param path: image存放路径 :param

2020-09-09 20:39:11 4333

原创 Python+requests之通过跳板机(ssh通道)操作MySQL

公司内部通常会限制MySQL的登录访问的IP地址,如此情况下我们就需要通过ssh登录指定的服务器(跳板机)才能访问远程MySQL,程序本身不能直接连接MySQL,在写一些自动化脚本时会很麻烦, Python可通过paramiko和sshtunnel模块建立ssh通道在访问MySQL思路1. 通过密钥或密码登录(ssh)指定跳板机2. 绑定本地地址与跳板机相通的端口3. 登录MySQL数据库4. 执行SQL5. 登出数据库和服务器实现(一)服务器登录方法#!/usr/..

2020-08-29 17:13:46 1789 1

原创 Python+requests通过paramiko远程登录Linux执行sh命令

在做自动化测试过程中, 偶尔需要登录Linux服务器执行一些sh命令。Python的paramiko模块,遵循SSH2协议, 支持以加密和认证的方式远程连接服务器, 可用来连接远程linux主机, 然后执行Linux命令或者通过SFTP传输文件封装的方法import paramikoclass Operate_Server(): def __init__(self, hostname, port, username): self.hostname = hostnam.

2020-08-27 23:32:39 531 1

原创 Python之pip升级崩溃提示找不到pip模块

Python版本:Python3.6.5 pip版本:pip-9.0.3使用pip安装requests库时提示pip版本过低, 直接pip命令升级pip升级pip后使用pip命令报错:No module named 'pip', 如下图:解决方法:# 重新修复python -m ensurepip# 重新升级python -m pip install --upgrade pip结果如下:...

2020-07-13 22:40:24 1176 3

原创 Python+requests之文件上传与下载

在做接口自动化测试中,经常会遇到文件的上传和下载接口文件上传一般上传文件使用的都是Content-Type: multipart/form-data;数据类型,可以发送文件,也可以发送相关的消息体数据。使用 requests 上传文件的基本步骤:1.构造文件数据,通过 open 函数以二进制方式打开文件2.构造相关数据3.发送请求,将文件数据以 files 参数传入,其他消息体数据通过 data或 json 传入参考官方文档>>> url = 'http:/

2020-07-13 22:38:23 8753

原创 Nginx禁止某些User Agent抓取网站

大家都知道网络上的爬虫非常多,爬虫有利也有弊,爬虫可以让我们的网站容易被其他人搜到,比如百度蜘蛛(Baiduspider)问题是有些爬虫不遵循robots规则对服务器造成压力,或者是恶意爬取网页、采集数据。不好的爬虫会耗费大量的服务器资源影响正常的用户使用。有些服务器是按流量计费,被爬虫耗费很多流量要交这些额外产生的费用,比如:七牛Nginx反爬虫在Nginx安装目录下的conf目录创建个spider目录,spider下新建个agent_deny.confcd /usr/local/

2020-06-21 08:39:29 742

原创 Python之虚拟运行环境Virtualenv

虚拟环境它是一个虚拟化的从计算机独立开辟出来的环境。通俗来讲, 虚拟环境就是把一部分内容独立出来,我们把这部分独立出来的东西称作“虚拟运行环境”,在这个虚拟运行环境中,我们可以只安装我们需要的依赖包,各个虚拟运行环境之间互相隔离互不影响。譬如,部署Django博客项目时需要用到Django,我们可以做一个Django的虚拟环境,里面只需要安装Django相关包就可以了;需要Selenium库做web自动化测试,就在开辟一个独立空间来部署Selenium库相关就行了优点Virtualenv用于创建

2020-06-11 21:57:24 619

原创 Python+requests 之urlencode编码与解码

URL编码URL编码是一种浏览器用来打包表单输入的格式; 浏览器从表单中获取所有的name和其中的值, 将它们以name/value参数编码(移去那些不能传送的字符, 将数据排行等等) 作为URL的一部分或者分离地发给服务器为什么需要urlencode编码原因:如果一样东西需要编码, 说明其并不适合直接传输。原因多种多样, 如Size过大, 包含隐私数据。对于Url来说, 之所以要进行编码, 是因为Url中有些字符会引起歧义。例如:URL参数字符串中使用key=value键值对这样的形式来传

2020-06-05 21:23:06 24937

原创 Jmeter之常用定时器(二)

统一随机定时器(Uniform Random Timer)统一随机定时器和高斯随机定时器的作用差异不大,区别在于延时时间在指定范围内且每个时间的取值概率相同,每个时间间隔都有相同的概率发生,总的延迟时间就是随机值和偏移值之和。该定时器可以在请求之间设置一个随机延时,每个随机延时有相同的发生概率。总的延时 = 随机延时时间 + 固定延迟偏移下面表示的是随机延迟时间的最大值是2000毫秒: Random Delay Maximum(inmilliseconds): 随...

2020-06-02 23:35:42 414

原创 Docker部署Django博客项目(二)

部署容器在Blog目录下执行部署容器命令(加 -d: 后台运行)root@VM-0-14-root: ~$:/home/Blog# sudo docker-compose up -dCreating network "Blog_my_backend" with driver "bridge"Creating network "Blog_my_frontend" with driver "bridge"Creating mysql_5.7.28 ... doneCreating we

2020-05-16 21:51:40 260

原创 Docker部署Django博客项目(一)

由于博客项目是由Python+Django+Mysql+uwsgi+Nginx搭建的,所以这里需要Nginx、mysql和博客镜像这三个镜像,Mysql与Nginx镜像直接pull下载即可,博客运行环境镜像则是自己手动构建的,可参考:Dockerfile与腾讯云容器服务构建镜像镜像下载docker pull nginx:mainline-alpine-perl # 下载Nginx镜像docker pull mysql:5.7.28

2020-05-16 21:46:43 668

原创 Dockerfile与腾讯云容器服务构建镜像

本地通过dockerfile构建博客项目镜像过程中通过pip安装包时经常性超时失败,通过配置腾讯云容器服务来构建镜像,不用考虑安装包超时的问题DockerfileDockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明FROM:定制的镜像都是基于 FROM 的镜像RUN: 用于执行后面跟着的命令行命令COPY: 复制指令,从上下文目录中复制文件或者目录到容器里指定路径ADD: 指令和 COPY 的使用格式一致(同样需求下,官方推荐使用 C.

2020-05-16 21:41:08 918

原创 docker-compose模板文件详解

模板文件是使用 Compose 的核心,里面大部分指令跟 docker run 相关参数的含义都是类似的;默认的模板文件名称为docker-compose.yml,格式为 YAML 格式;文件参数参数 详解 version 指定 compose 文件的版本 services 定义所有的 service 信息 build 指定 Docke...

2020-05-03 14:46:36 827

原创 docker-compose常用命令-详解

命令对象与格式对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。若没有特别说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响执行 docker-compose [COMMAND] --help 或者 docker-compose help [COMMAND] 可以查看具体某个命令的使用格式。如下:docker-comp...

2020-05-03 14:44:01 10530

原创 docker-compose之Nginx二级目录反向代理禅道

mysql与禅道镜像下载与构建参考:mysql 禅道目录介绍cloud # 文件名+----mysql_db # mysql的挂载目录,挂载到容器| +----mysqld.cnf # mysql的配置文件,挂载到容器+----docker-compose.ym...

2020-05-03 14:42:11 1359

空空如也

空空如也

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

TA关注的人

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