自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(128)
  • 收藏
  • 关注

原创 通过jenkins自动从gitlab上获取代码,配置自动化测试任务

自动化测试脚本开发完成以后,希望可以把脚本放在公共的环境下提供一个入口供大家一起使用,目前最好的解决方案就是需要把代码部署在Jenkins上,下面看下如何在Jenkins配合自动化测试任务;  1.首先我们需要搭建Jenkins的运行环境;  2.环境搭建完成最重要的是安装插件,插件的安装需要根据自己实际的使用情况安装,没有必要大而全的安装,这样很容易引入一些没有必要的麻烦,比如说插件的漏洞,会让你服务器遭受到不必要的攻击;    目前我的代码托管在公司内部的gitlab,首先我需要在Jenki

2021-05-17 16:36:21 570

原创 Linux系统常用命名和如何在Linux系统下运行python代码

echo是打印变量的值或者给定的字符串比如,输入echo hello或者echo "hello"都是在控制台打印出hello单词    但是我们需要把打印出来的字符串记录到文本文件中,就需要>和>>命令    touch a.txt 新建一个文本文件a.txt    echo hello > a.txt    则a.txt中会记录下hello,但是如果再次执行echo hello > a.txt。则会覆盖之前的hello,    怎样追加...

2021-05-17 15:56:22 300

原创 airtest中touch点击和click点击和一些常用操作

touch(v, times=1,duration=0.01,right_click=False):点击v:截图对象-图片 或者坐标(x,y) 通过框选按钮来获取v的值 此(x,y)类似(1024,768)的坐标值times:点击次数duration:点击持续时间right_click:如果是windows平台,则=True表示鼠标右键点击,Android/IOS无用【注意】:1.times和duration可以组合使用,表示点击times次,每次间隔duration秒,这就可以实

2021-05-17 15:44:21 10956

原创 Python之JSON库中序列化和反序列化常用方法

1、为什么需要序列化与反序列化我们知道,当两个进程进行网络通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。那么当两个进程进行通信时,能否实现进程间的对象传送呢?答案是可以的!如何做到呢?这就需要序列化与反序列化了!换句话说,一方面,发送方需要把这个Python对象转换为字节序列,然后在网络上传送,这就是序列化;另一方面,接收方需要从字节序列中恢复为Python对象,这就是反序列化。当我们明晰了为什么需要序列化和反序列化后,我

2021-03-30 16:34:10 353

原创 下载Xcode历史版本方法

下载Xcode历史版本方法https://developer.apple.com/download/more/

2021-02-09 10:48:13 963

原创 airtest如何指定截图保存的路径和名称和截图相关

截图相关如何用脚本截图对目标设备进行一次截图,并且保存到文件中,可以传入截图文件名、截图的简短描述、截图压缩精度和截图最大尺寸,示例如下:snapshot(filename="123.jpg",msg="首页截图",quality=90,max_size=800)如何进行局部截图局部截图或者说按坐标截图是大家经常会问到的问题,Airtest提供了 crop_image(img, rect) 方法可以帮助我们实现局部截图:# -*- encoding=utf8 -*-__author__ .

2021-02-08 10:56:55 6222 4

原创 python列表生成式

python——列表生成式列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。 列表生成式的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是0个或多个for或者if语句。列表表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以if和for语句为上下文的表达式运行完成之后产生。格式:variable = [out_exp fo...

2021-01-28 17:54:26 352

原创 Python中的random模块用于生成随机数

Python中的random模块用于生成随机数。下面具体介绍random模块的功能:1.random.random()#用于生成一个0到1的随机浮点数:0<= n < 1.01 import random 2 a = random.random()3 print (a) 2.random.uniform(a,b)#用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: b <= n...

2021-01-28 17:30:24 872

原创 pytest运行上次失败的用例

--lf, (--last-failed) 只重新运行上次运行失败的用例(或如果没有失败的话会全部跑) --ff, (--failed-first) 运行所有测试,但首先运行上次运行失败的测试 --lf是--last-failed的缩写,--ff是--failed-first的缩写if __name__ == "__main__": #pytest.main(["-s", "-v", "test_01.py", "--lf"]) pytest.main(["-s", "-v".

2021-01-21 10:07:45 846

原创 定义测试固件fixture后,如何调用fixture传参

fixture作为参数传入定义测试固件fixture就是在函数上加个装饰器@pytest.fixture(),fixture命名不要用test_开头,跟用例区分开。用例才是test_开头的命名。fixture是可以有返回值的,如果没return默认返回None。用例调用fixture的返回值,直接就是把fixture装饰的函数名称当成变量名称,如下案例import pytest@pytest.fixture()def user(): print("获取用户名") a =.

2021-01-20 18:11:39 888

原创 pytest之pytest.ini配置文件

pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行。ini配置文件pytest里面有些文件是非test文件pytest.ini pytest的主配置文件,可以改变pytest的默认行为,名称固定不能改,放在项目根目录下。conftest.py 测试用例的一些fixture配置_init_.py 识别该文件夹为python的package包tox.ini 与pytest.ini类似,用tox工具时候才有用setu

2021-01-20 17:05:02 729

原创 pytest里面用xfail标记用例为预期失败的用例,报告详情不会报错

当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例a的结果,那可以直接跳过用例b和c的测试,直接给他标记失败xfail用到的场景,登录是第一个用例,登录之后的操作b是第二个用例,登录之后操作c是第三个用例,很明显三个用例都会走到登录。如果登录都失败了,那后面2个用例就没测试必要了,直接跳过,并且标记为失败用例,这样可以节省用例时间。import pytest'''从结果可以看出用例1失败了,用例2和3没执行,直接标记为xfail了'''canshu = [{"user": .

2021-01-19 17:54:56 459 1

原创 pycharm运行测试脚本三种方式

pycharm运行测试脚本有三种方式,一种是以python脚本方式运行run test_x.py这种就会执行if下面的内容(一般都是用这种方式运行) 用到unittest框架,此时运行代码,pycharm会自动识别到以unittest方式运行,运行显示的结果信息和1不一致 以pytest执行:run pytest test_x.py 这种是不会执行if __name__ == "__main__":下面的内容if __name__ == "__main__": pytest.mai

2021-01-13 18:09:27 4059

原创 @pytest.mark.parametrize的参数化结合@pytest.fixture测试固件的参数化的使用

fixture参数详解#fixture(scope="function", params=None, autouse=False, ids=None, name=None):#使用装饰器@pytest.fixture()的name参数,指定测试固件(被装饰的函数)的新名字。#通过装饰器@pytest.fixture()的参数params,实现测试固件的参数化。#可以通过装饰器@pytest.fixture()的参数ids,设置测试用例的id。#通过装饰器@pytest.fixt...

2021-01-13 16:08:00 1045

原创 pytest之结合airtest生成allure和airtest报告

定制报告场景:希望在报告中看到测试功能,子功能,测试步骤, 用例描述,错误截图解决: @Feature,story,step,description步骤:1. Import allure2.功能上加@allure.feature('功能名称')3.子功能上加@allure.story('子功能名称')4.步骤上加@allure.step('步骤细节')5.用例描述@allure.description ('提供描述字符串的装饰器')或'''测试用例描述'''6.错误截图a

2021-01-12 16:29:13 1554

转载 airtest之生成报告详解

airtest中log()和报告生成相关的接口,可以为报告的步骤添加用户自定义的信息log记录:log()log() 接口方便插入用户自定义的一些log信息,将会被显示在Airtest报告中。在1.1.6版本的Airtest中,log接口支持传入4个参数:args ,可以是字符串、非字符串或者 traceback 对象;timestamp ,用于自定义当前log的时间戳;desc ,用于自定义log的标题;snapshot ,表示是否需要截取一张当前的屏幕图像并显示到报告中:i..

2021-01-11 18:09:16 7063

原创 python 中图片的数组格式到二进制的互相转换

python 图片 数组到二进制的互相转换需要导入以下包,没有的通过pip安装import matplotlib.pyplot as pltimport cv2from PIL import Imagefrom io import BytesIOimport numpy as np1.图片和数组互转# 图片转numpy数组img_path = "images/1.jpg"img_data = cv2.imread(img_path)# numpy数组转图片img_data.

2021-01-04 10:48:19 1014

原创 python中全局变量、局部变量、类变量、实例变量

定义: a、全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量。 b、局部变量:在函数内、在class的方法内(未加self修饰的),这就是局部变量。 c、 静态变量:在class内的,但不在class的方法内的,这就是静态变量(类变量)。 d、 实例变量:在class的方法内的,用self修饰的变量,这就是实例变量。1.全局变量与局部变量:全局变量是在整个py文件中声明,全局范围内都可以访问...

2020-12-29 18:35:38 984

原创 pytest之allure-pytest生成报告

allure-pytest 环境准备mac环境相关:python 3.7版本pytest 6.1.2版本allure-pytest 2.8.29 最新版首先如果你没有安装 pytest 库的话,先使用 pip 安装一下:pip3 install pytest另外还需要安装 pytest 支持 allure 报告的插件库:pip3 install allure-pytest接下来在运行测试时,使用 pytest 命令运行:pytest <测试目录&..

2020-12-25 01:01:00 549 2

原创 Mac系统的环境变量配置说明

Mac系统的环境变量,加载优先级为:/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc其中/etc/profile和/etc/paths是系统级别的,系统启动就会加载,后面几个是仅对当前用户有效的环境变量。后面3个按照从前往后的顺序读取,如果~/.bash_profile文件存在,则后面的几个文件就会被忽略不读了,我一般配置当前用户级别的环境.bash_profile文件。如果~/.bash_prof

2020-12-24 23:02:23 371

原创 airtest之Android真机连接

使用AirtestIDE连接安卓设备之前,需要确保ADB已经连接上了设备。① 我们可以使用adb devices来查看设备情况,如果仅仅提示List of devicesattached,则表明ADB未连接上任何设备;此时需要检查手机上的USB调试功能是否已开启,或者换一根USB数据线;② 如果ADB已连接上设备,那么执行adb devices后,会显示已连接设备的列表:List of devices attachedSJE5T17B17001648 deviceSJE5T1...

2020-12-23 16:32:17 2134 1

原创 Jenkins 上部署自动化测试脚本

一、Linux 下安装GIT# 安装git yum install git -y# 校验安装是否成功 git --versionWindow安装GIT# 下载地址https://git-scm.com/download/win1、安装Git,下载安装包,一直默认点击下一步安装好就行。2、由于我们不需要查看 Git的视图版本说明,所以这里我们去掉View Relese Notes 前面的勾选,并点击按钮"Finish"cmd里执行git --versio

2020-12-23 13:22:32 364

原创 airtest获取设备号和获取设备宽度、高度、绝对坐标 相对坐标、滑动屏幕

def setup_function(): # 连接当前设备 # HUAWEI honor 10 分辨率:2280*1080 # OPPO R15 分辨率:2280*1080 # Vivo x21 分辨率:2280*1080 # onePlus 5T 分辨率:2160×1080 poco sevices启动不稳定 # xiaomi mix2 元素无法识别 # onePlus pocoserver无法启动 device =.

2020-12-23 10:09:55 5721

原创 pytest.mark.parametrize的参数化使用

@pytest.mark.parametrize("参数名",列表数据)defparametrize(self,argnames, argvalues, indirect=False, ids=None, scope=None):ids含义:用例的ID格式:传一个字符串列表作用:可以标识每一个测试用例,自定义测试数据结果的显示,为了增加可读性强调:ids的长度需要与测试数据列表的长度一致indirect作用:如果设置成True,则把传进来的参数当函数执行,而不是一个参数..

2020-12-21 18:41:01 1991 1

原创 Appium连接android真机

from appium import webdriverfrom appium.webdriver.extensions.android.nativekey import AndroidKeyimport timefrom selenium.webdriver.common.by import Bydesired_caps = { 'platformName': 'Android', # 被测手机是安卓 'platformVersion': '10', # 手机安卓版本 .

2020-11-26 17:07:28 687 1

原创 poco定位元素

1、基本操作获取控件保存变量x = poco('NodeName')x = poco('NodeName',type = '类型名比如Button')获得A节点下的子节点Bitem = poco('ANodeName').child('BNodeName')获取A节点下类型为Image的子节点item= poco('ANodeName').child(type='Image')获得A节点下的子节点B的所有名为C的后代们,是一个节点数组items = poco('AN

2020-11-25 23:20:04 8741 1

原创 airtest之IOS自动化测试

1、定位元素后的文本输入text()接口是Airtest中的文字输入接口,它能实现在目标设备上输入文本的功能,但是文本框需要处于激活状态。text()接口支持的平台有:Android、IOS和Windows。它包含以下参数: text– 要输入的文本,例如: text("hello") enter–是否在输入完毕后,执行一次Enter(回车键),相当于keyevent("ENTER"),默认是True;如果仅是想输入文字,而不执行Enter(回车键),则可以传入False进去: .

2020-11-25 23:18:59 2981 1

原创 异常处理try ...except...else和raise抛出系统异常

1、try ...except...else结构 '''try ...except...else结构如果try块中没有抛出异常,则执行else块,如果try中抛出异常,则执行except块'''try: a=int(input('请输入被除数:')) b=int(input('请输入除数:')) result=a/b print(result)except BaseException as e: #将错误命名为e ...

2020-11-24 11:58:55 378

原创 Appium之IOS端定位元素

最近在做IOS自动化测试,IOS的Appium环境都配置OK,执行起来真的慢,慢到怀疑人生,那么今天就来总结一下IOS定位方式和各个定位方式的速度排序。据我观察,按查找元素的顺序速度,从快到慢的顺序如下:ios_predicate >> accessibility_id >> class_name >>xpath1、元素属性介绍type:元素类型,与className作用一致,如:XCUIElementTypeButtonvalue: 一般.

2020-11-23 23:57:43 2517 1

原创 Appium安卓端定位元素

根据ID在Selenium Web自动化教程里,我们说过,如果能根据ID选择定位元素,最好根据ID,因为通常来说ID是唯一的,所以根据ID选择 效率高。在安卓应用自动化的时候,同样可以根据ID查找。但是这个ID ,是安卓应用元素的resource-id属性使用如下代码driver.find_element_by_id('expand_search')根据CLASS NAME安卓界面元素的 class属性 其实就是根据元素的类型,类似web里面的tagname, 所以通常不是..

2020-11-23 22:48:08 319

原创 Appium连接IOS真机

前提:已经安装了Appium1.71版本,我这里用的是桌面版本环境要求:真机iOS9.3及以上macOS 最新系统Xcode11.4安装步骤如下第一步:iOS真机启动需要安装libimobiledevice和ios-deploy工具1.安装libimobiledevice【brew install libimobiledevice —HEAD】2.安装ios-deploy【npm install -g ios-deploy】第二步:...

2020-11-19 11:44:51 3519

原创 Mac版 Xcode+Tagent+airtest环境搭建

Mac版 Xcode+Tagent+airtest环境搭建-详细操作步骤在IOS平台进行Airtest测试,需要进行如下部署。1. iOS-Tagent在手机上创建一个WebDriver服务器,可用于远程控制iOS设备,定位UI元素 1.1 下载 iOS-Tagent 到本地电脑 git clonegit@github.com:AirtestProject/iOS-Tagent.git git clone https://github.com/AirtestP...

2020-11-17 02:08:19 2038

原创 Airtest基础使用原理和airtest中touch定位说明

Airtest是一款跨平台的UI自动化测试框架,基于图像识别原理,适用于游戏和App。安装这部分说明了如何在本地python环境中安装Airtest测试框架。如果你需要使用GUI工具,请从官网直接下载AirtestIDE使用。系统要求操作系统 Windows MacOS X Linux Python2.7 & Python3.3+安装Python Package使用pip来管理安装包和自动安装所有依赖。pip install -U airtest...

2020-11-16 11:09:29 9439

原创 airtest的基础使用知识

airtest辅助窗常用的api如下,将鼠标悬停就可以查看到对应的入参和用法。例如截取每一个按钮的图片,进行点击touch(''截取的图片")操作。执行代码的过程:程序先会在整个界面中取一张截屏,然后在截屏中寻找我们先前截取的那个部分,然后再定位到该图片的位置,对图片进行点击的操作,从而达到通过图像识别进行测试的自动化,当然基于图像识别的方式比较难进行输入值的操作,比较适合一些重复繁琐的按钮点击事件。这种通过截取图像再操作的方式并不是很适合用来做类似登录的需要用户输入数据的东西。常用的ap

2020-11-13 23:12:08 1919

原创 Appium定位元素工具

APP界面元素查看工具做 Selenium Web 自动化的时候,要找到元素,我们是通过浏览器的开发者工具栏来查看元素的特性,根据这些特性(属性和位置),来定位元素Appium 要自动化手机应用,同样需要工具查看界面元素的特征。常用的查看工具是: Android Sdk包中的uiautomateviewer和 Appium Desktop 中的Appium Inspectoruiautomateviewer安卓查看APP界面元素,最常用的就是 Android SDK 中的工具ui...

2020-11-05 00:09:55 865

原创 Mac安装Appium环境

一、Mac基础环境搭建先验证Mac上是否安装以下的软件,不出意外的话,Mac里会有自带,没有安装的自行在网上找安装。在安装appium1.Jdk一定要安装JDK才能安装Java,已安装过的可以跳过1)打开终端,输入java会出现提示“需要安装jdk才能使用java命令行工具”,点击更多信息,就可以会进入官网网站。或者,自己输入下载网址:https://www.oracle.com/java/technologies/javase-jdk14-downloads.html2)选择对应的系统.

2020-10-31 02:44:08 1903

原创 面试问题一

1、python内存管理https://www.cnblogs.com/nangec/p/12680947.html2、python装饰器3、Python中函数传参格式有哪几种

2020-10-21 22:48:43 171

原创 pytest中pytest-html生成html报告

先安装pip install pytest-html指定报告路径1.直接执行"pytest --html=report.html"生成的报告会在当前脚本的同一路径,如果想指定报告的存放位置,放到当前脚本的同一目录下的report文件夹里pytest --html=./report/report.htmlMicrosoft Windows [版本 6.1.7601]版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Admini.

2020-10-19 22:36:39 4111

原创 fixture参数scope=“module“时,module在第一个调用测试固件的函数前面执行一次

fixture参数scope="module",module作用是整个.py文件都会生效,用例调用时,参数写上函数名称就行。import pytest@pytest.fixture(scope="module")def open(): print("打开浏览器,并且打开百度首页") yield print("执行teardown!") print("最后关闭浏览器")def test_s1(open): print("用例1:搜索python-1")

2020-10-17 20:58:37 666

原创 pytest使用yield关键字实现teardown_xxx的功能和request.addfinalizer()注册清理函数

上一篇讲到fixture通过scope参数控制前置setup的范围,既然有setup作为用例之前前的操作,用例执行完之后那肯定也有teardown操作。使用fixture的teardown操作并不需要独立的函数,用yield关键字可实现teardown操作#使用yield关键字实现teardown_xxx的功能import pytest # 此时,login函数是一个测试固件,相当于实现了setup_xxx&teardown_xxx的功能。@pytest.fixture()def

2020-10-17 20:46:03 2223 1

空空如也

空空如也

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

TA关注的人

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