摘要:allure-pytest环境准备 windows环境相关: python 3.7版本 pytest 5.4.3版本 allure-pytest 2.8.17 最新版 使用pip install allure-pytest安装 allure命令行工具 allure是一个命令行工具,需要去github
阅读全文
摘要:前言 平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。 自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,或者针对某个模块的用例重复执行多次。 pytest-repeat pytest-repeat是pyt
阅读全文
摘要:前言 "80%的bug集中在20%的模块,越是容易出现bug的模块,bug是越改越多"平常我们做手工测试的时候,比如用100个用例需要执行,其中10个用例失败了,当开发修复完bug后,我们一般是重点测上次失败的用例。那么自动化测试也一样,当用例特别多时,为了节省时间,第一次部分用例失败了,修复完之后
阅读全文
摘要:前言 一个测试工程下是可以有多个conftest.py的文件,一般在工程根目录放一个conftest.py起到全局作用。 在不同的测试子目录也可以放conftest.py,作用范围只在该层级及以下目录生效。 conftest层级关系 在web_item_py项目工程下建两个子项目(包)QQ、UC,并
阅读全文
摘要:fixture作用范围 fixture里面有个scope参数可以控制fixture的作用范围:session > module > class > function fixture(scope="function", params=None, autouse=False, ids=None, nam
阅读全文
摘要:使用多个fixture 如果用例需要用到多个fixture的返回数据,fixture也可以return一个元组、list或字典,然后从里面取出对应数据。 #test_fix1.py import pytest @pytest.fixture() def user(): a="admin" b="12
阅读全文
摘要:前言 fixture是pytest的核心功能,也是亮点功能,熟练掌握fixture的使用方法,pytest用起来才会得心应手! fixture简介 fixture的目的是提供一个固定基线,在该基线上测试可以可靠地和重复地执行。fixture提供了区别于传统单元测试(setup/teardown)有显
阅读全文
摘要:前言 doctest从字面意思上看,那就是文档测试。doctest是python里面自带的一个模块,它实际上是单元测试的一种。 官方解释:doctest模块会搜索哪些看起来像交互式会话的python代码片段,然后尝试执行并验证结果。 doctest测试用例可以放在两个地方: 函数或者方法下的注释里面
阅读全文
摘要:前言 pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行。 ini配置文件 pytest里面有些文件是非test文件 pytest.ini pytest的主配置文件,可以改变pytest的默认行为 conftest.py
阅读全文
摘要:前言 平常写自动化用例会写一些前置的fixture操作,用例需要用到就直接传该函数的参数名称就行了。当用例很多的时候,每次都传这个参数,会比较麻烦。 fixture里面有个参数autouse,默认是False没开启的,可以设置为True开启自动使用fixture功能,这样用例就不用每次都去传参了。
阅读全文
摘要:前言 当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例的结果,那可以直接跳过用例b和c的测试,直接给他标记失败xfail 用到的场景,登录时第一个用例,登录之后的操作b是第二个用例,登录之后操作c是第三个用例,很明显三个用例都会走到登录。 如果登录失败了,那后面2个用例就没有必要了,直接跳
阅读全文
摘要:前言 pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行。 一个大项目自动化用例时,可以划分多个模块,也可以使用标记功能,标明哪些是模块1用例,哪些是模块2的,运行代码时候指定mark名称运行就可以。 -v 指定的函数节点id 如果想指定运行某个.py模
阅读全文
摘要:前言 为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数。 比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登录函数就行。但是登录的账号不能写死,有时候我想用账号1去登录,执行用例1,用账号2去登录执行用例2,所以需要对函
阅读全文
摘要:前言 pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者你希望失败的测试功能 skip意味着只有在满足条件时才希望测试通过,否则pytest应该跳过运行测试。常见示例是在非windows平台上跳过仅限windows的测试,或跳过测试依赖于当前不可用的外部资源(例如数据库)。
阅读全文
摘要:前言 断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢? 简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试failed assert pytest允许您使用标准Python断言来验证Python测试中的期望和值。例如,你
阅读全文
摘要:前言 命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在cmd执行"pytest --html=report.html",这里面的"--html=report.html"就是从命令行传入的参数。对应的参数名称是html,参数值是report.html. conftest配置参数 1.首先
阅读全文
摘要:前言 pytest.mark.parametrize装饰器可以实现测试用例参数化。 parametrizing 1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子 # coding:utf-8 import pytest @pytest.mark.parametrize("test_inp
阅读全文
摘要:前言 pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告。 pytest-html 1.pip安装 pip install pytest-html 2.执行方法 pytest --html=report.html html报告 1.打开cmd,cd到需要执行pytest用例
阅读全文
摘要:前言 上一篇讲到fixture通过scope参数控制setup级别,既然有setup作为用例之前的操作,用例执行完之后那肯定也有teardown操作。 这里用到fixture的teardown操作并不是独立的函数,用yield关键字呼唤teardown操作。 scope="module" 1.fix
阅读全文
摘要:前言 上一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景: 用例1需要先登录,用例2不需要登录,用例3需要登录。很现实这就无法用setup和teardown来实现了。 这就是本篇学习的目的,自定义测试用例的预置条件。
阅读全文
摘要:前言 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次。当然还有更高级一点的setupClass和teardownClass,需配合@classmethod装饰器一起使用,在做selenium自动化的时候,它的效率尤为突出,可以只
阅读全文
摘要:上一篇已经介绍了如何在cmd执行pytest用例,那么pycharm下如何运行pytest用例呢? pycharm运行三种方式 1.以xx.py脚本方式直接执行,当写的代码里面没用到unittest和pytest框架时,并且脚本名称不是以test_开头命名的,此时pycharm会以xx.py脚本方式
阅读全文
摘要:用例设计原则 文件名以test_*.py文件和*_test.py 以test_开头的函数 以Test开头的类 所有的包pakeage必须要有__init__.py文件 help帮助 1.查看pytest命令行参数,可以用pytest -h 或 pytest --help查看 可以按照如下写用例 #D
阅读全文
摘要:参考官网:https://docs.pytest.org/en/latest/getting-started.html,https://docs.pytest.org/en/latest/contents.html 参考上海-悠悠博客:https://www.cnblogs.com/yoyoketa
阅读全文
摘要:下面来看一些python的单元测试框架unittest。 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发 与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。 unittest官网: https://doc
阅读全文
摘要:Token 在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般作为邀请、登录系统使用。 为了验证用户登录情况以及减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。有些登录不是用cookie来验证的,是用token参数来判断是否登录。token传参有两种:一种是放在请求头里
阅读全文
摘要:返回json数据的网址:http://jsonplaceholder.typicode.com/posts 大致流程步骤:web页面操作——>抓包看参数和url——>代码模拟接口请求——>取到接口返回结果——>断言 import requests #代码模拟接口请求 url="http://json
阅读全文
摘要:在实际工作中,有些接口请求完以后会重定向到别的url,而你却需要重定向前的url。 1、请求转发 该动作是服务器行为,在web容器中进行的,客户端对于跳转是不知道的,地址栏中显示的URL是不会变化的,因为请求转发中是一次请求,相同的request,可以在请求中设置属性对象(setAttribute(
阅读全文
摘要:cookie登录博客园,session保持,发布新博客,报错:{'errors': ['用户账号不匹配,请备份未提交的内容并检查当前登录账号'], 'type': 0} import requestsimport jsonimport datetimeheaders={"User-Agent":"M
阅读全文
摘要:ISO格式时间 包含百度联盟的广告页面都会有Hm_lpvt_xxxx以及Hm_lvt_xxx这类cookie;其具体含义和用途对于联盟使用者或许根本就不需要知道。 Hm_lpvt_xxxxxxx 为当前时间戳(秒) Hm_lvt_xxx 为一串时间戳。最近的一次访问时间戳追加在后面,最多保留4个时间
阅读全文
摘要:一、需要使用requests下的会话对象; 会话对象让你能够跨请求保持某些参数。它也会在同一个Session实例发出的所有请求之间保持cookie。 方法级别的参数不会被跨请求保持。 参考:https://requests.readthedocs.io/zh_CN/latest/user/advan
阅读全文
摘要:我们用自动化新建项目之后,要想接着对这个新建项目操作,那就需要用参数关联了,新建项目之后会有一个项目的id,获得到这个id,就可以通过这个项目id继续操作这个新建项目。 大致流程步骤:登录——>新建项目——>web界面操作项目进度——>fiddler抓取操作请求——>提取参数——>传参——>代码实现
阅读全文
摘要:session保持存会话 help(session()) 通过help方法查看帮助文档。 使用session登录开源的OPMS系统,搭建OPMS系统,参考:https://www.cnblogs.com/canglongdao/p/12562972.html #coding:utf-8 import
阅读全文
摘要:有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接)。获取不到也没关系,可以通过添加cookie的方式绕过验证码。 抓登录cookie 如博客园,未登录时,使用fiddler抓包查看cookie值。登录后,使用fiddler抓包查看cook
阅读全文
摘要:电脑环境 python:3.7 requests:2.22.0 fiddler:v5.0.20 一、SSL问题 1.在你不启用fiddler时,python代码直接发送https请求,不会有SSL问题(也就是说不想看到SSL问题,关掉fiddler就行) 2.启动fiddler抓包,会出现SSLEr
阅读全文
摘要:HTTP协议规定POST提交的数据必须放在消息主题(entity-body)中,但协议并没有规定数据必须使用什么编码方式。 浏览器行为:Form表单提交 Http协议行为:Http1.1协议 我们知道,HTTP协议是以ASCII码传输,建立在TCP/IP协议之上的应用层规范。规范把HTTP请求分为三
阅读全文
摘要:help函数 help(requests)查看相关注释和案例内容。 发送post请求的接口(dict参数) 发送post请求的接口(json参数) post的body是json类型,也可以用json参数传入。 先导入json模块,用dumps方法转化成json格式。 请求头header 现在由于对接
阅读全文
摘要:会话对象 会话对象让你能够跨请求保持某些参数。它也会在同一个Session实例发出的所有请求之间保持cookie,期间使用urllib3的connection pooling功能。所以如果你向同一主机发送多个请求,底层的TCP链接将会被重用,从而带来显著的性能提升。 我们来跨请求保持一些cookie
阅读全文
摘要:本文主要介绍如何使用JMeter对TCP协议进行测试 一、TCP概念 二、TCP协议的三次握手 三、TCP取样器参数介绍 四、Wireshark抓包和开发TCP脚本 一、TCP概念 1. TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于
阅读全文
摘要:安装requests;pip install requests 发送请求 import requests#导入requests模块 r=requests.get("https://www.baidu.com/")#获取某个网页 print(r) 传递URL参数 requests允许你使用params
阅读全文
摘要:一、下载plsqldev711.exe安装包,傻瓜式安装; 二、安装成功后,桌面出现PLSQL快捷方式,双击该快捷方式,出现界面的对话框,但是database选项我们没办法进行选择。 原因是我们的机器没有安装oracle client端,要正常的使用PL/SQL Developer程序,我们必须要安
阅读全文
摘要:如何装饰一个类? 为一个类通过装饰,增加一些类属性。 之所以能够装饰,本质上是为类对象动态的添加了一个属性,而这个标识符My指向这个类对象。 def sethu(name): def wrapper(self): self.NAMES=name #print(self) return self #p
阅读全文
摘要:1、核心概念 物理内存:就是系统硬件提供的内存大小,是真正的内存,一般叫做内存条,是与CPU直接交换数据的内部存储器,也叫主存(内存)。 虚拟内存:相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出一块逻辑内存,用作虚拟内存的
阅读全文
摘要:类:抽象的概念;是属性和方法的集合。类中的函数叫方法。 对象instance、object 对象是类的具象,是一个实体。对象是数据和操作的封装。 面向对象3要素: 1.封装: 2.继承: 多复用,继承来的就不用自己写了 多继承少修改。 3.多态: 面向对象编程最灵活的地方,动态绑定。 类: 必须使用
阅读全文
摘要:centos7下安装启动,请参考:https://www.cnblogs.com/canglongdao/p/12564800.html redis参考:https://mp.weixin.qq.com/s?__biz=MzU4MjQ5NzMzNA==&mid=2247484976&idx=1&sn
阅读全文
摘要:增加一个哨兵位,每轮和哨兵位进行比较。 a=[3,0,1,0] a.insert(0,0) for i in range(len(a)):#0, for j in range(1,i): a[0]=a[i]#2,1;0 if a[0]<a[j]: a[0],a[j]=a[j],a[0] a[i]=a
阅读全文
摘要:函数定义 def 函数名(参数列表): 函数体(代码块) 函数名就是标识符。 语句块必须缩进,约定4个空格。 python的函数没有return语句,隐式会返回一个None值。 定义中的参数列表称为形式参数,只是一种符号表达,简称形参。 调用 函数定义,只是声明了一个函数,它不会被执行,需要调用。
阅读全文
摘要:jmeter请求参数中,有json数据时,勾选编码; jmeter csv data set config可以输入相对路径 或绝对路径,如与当前jmx脚本同级的address.txt;输入address.txt; tomcat线程池调优tomcat:8080 server.xml maxThread
阅读全文
摘要:原因:windows提供给TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收它们,就导致我们在短时间内跑大量的请求时将端口占满了,导致如上报错。 解决办法(在jmeter所在服务器操作): 1.cmd中输入regedit命令打开注册表; 2.在 HKEY_LOCAL_MACHINE
阅读全文
摘要:字符串 字符串是不可变对象 a='string' a="sting2" a=r"hello\n mm" a="""abc""" a='a\ b\ c' 字符串跨行写,加\ 字符串编码 字符串支持使用索引访问;a[0] for i in a: print(i) 可迭代(字符串,元组,数组);list[
阅读全文
摘要:数值型 int float complex bool 数字的处理函数 round();四舍六入,五取偶;round(1.5)=2;round(2.5)=2; floor()地板;天花板ceil(); math.floor(1.5)=1;math.ceil(1.5)=2; min(); max();
阅读全文
摘要:一、Perfmon简介 Perfmon(Performance Monitor)是一款Windows自带的性能监控工具,提供了图表化的系统性能实时监视器、性能日志和警报管理。通过添加性能计数器(Performance Counter)可以实现对CPU、内存、网络、磁盘、进程等多类对象的上百个指标的监
阅读全文