- 博客(51)
- 收藏
- 关注
原创 docker基础命令
docker是一种虚拟化技术,可用于测试、开发的环境搭建、微服务架构,自动化测试和持续集成和发布。集装箱,拉取镜像,可以做到测试环境和生产环境一样。传统VM,慢,需求内存多镜像:容器模板,类容器:运行环境,实例对象,支持创建、启动、删除、停止、暂停仓库:保存镜像docker基本指令:ifconfig、vi /etc/sysconfig/network-scripts/ifcfg-xxxdocker -v、systemctl start/stop/restart/status
2022-02-25 10:52:15 288
原创 yaml格式配置文件和测试用例,相对路径转绝对路径,allure报告优化
yaml文件格式要求1.区分大小写2.使用缩进表示层级3.不能使用tab键,只能用空格4.同级元素左对齐5.使用#注释yaml文件是内容,列表和字典及其复合,---表示独立文件---,&和*表示引用# 注释# 1- 字典格式 键值对#name: th0004#password: 11449#2-列表#只要非数字都识别为字符串#- 100#-# - 1# - 2# - 3#3 混合类型#字典套字典#a: tom#b:# c: 10#
2022-02-20 16:21:57 2435
原创 自动化执行Excel用例优化
V3.0把响应的数据格式转为json读取Excel数据,可以读取任意行。[001,002-005,006]# -*- coding: utf-8 -*-# 2022/1/21# LiuRenHongimport xlrdimport json"""V1.0读取指定行列数据实现用例筛选功能脚本代码和用例分离V2.0按照用户需求,读取任意行任意列数据----可变数量参数,*args元组V3.0把响应的数据格式转为json读取Excel数据,可以读取任意行。[001,00.
2022-01-25 14:50:29 942 2
原创 自动化执行Excel用例
接口自动化测试项目准备,1.项目测试需求分析。2.接口自动化测试框架规划。3.项目代码工程创建。讲述如何进行自动化测试,从编程语言---python,编程工具--pycharm,测试框架--pytest,测试报告,持续方案,仓库服务器,测试管理工具七个方面回答。编写测试脚本,先建包,libs---基本代码包,data---数据文件包,configs--配置包,tools--工具包,case--测试用例包,test_case--测试脚本包,logs--日志包,report--报告包。代码编写方案,
2022-01-21 17:13:12 964 1
原创 接口强化学习
md5加密token鉴权------token关联操作-------cookie鉴权--------cookie关联操作cookie的二次封装,联合校验json和字典的区别和转化https需要关闭警报,不使用SSLlogin.py# -*- coding: utf-8 -*-# 2022/1/17import hashlibimport requestsHOST = "http://121.41.14.39:8082"def get_md5(psw): #实例化一
2022-01-19 15:28:16 532 1
原创 接口自动化之协议和基础格式
配置文件# -*- coding: utf-8 -*-# 2022/1/16userame = "th0004"password = "e2e2fd34c1cfebdf431177db8e49fdd2"HOST = "http://121.41.14.39:8082"测试脚本# -*- coding: utf-8 -*-# 2022/1/16"""接口自动化测试,模拟前端给后端发送协议,并检验返回内容正确性 发现前端不能发现的隐藏bug 及早爆出风险前端
2022-01-17 11:09:53 1588
原创 allure和pytest的简单使用
# -*- coding: utf-8 -*-# 2022/1/14import pytestimport allureimport os@allure.feature("登录模块")class TestLogin: #allure报告层级 @allure.story("登录操作") @allure.title("login1") #数据驱动 @pytest.mark.parametrize(['a','b'],[(1,2),(2,2),(5,6)].
2022-01-14 16:16:42 509
原创 appium手机混合应用,web界面h5
混合应用测试准备desired_caps = { "platformName": "Android", "platformVersion": "10", "deviceName": "X4UOCQOF79AUZX79", "appPackage": "com.example.haiwen.myhybirdapp", "appActivity": ".MainActivity", "noReset": "True", "newCommandTime
2022-01-12 10:58:32 1712
原创 appium模块化使用
# -*- coding:utf-8 -*-desired_caps = { 'platformName': 'Android', 'plathformVersion': '10', 'deviceName': 'X4UOCQOF79AUZX79', 'appPackage': 'com.hpbr.bosszhipin', 'appActivity': '.module.launcher.WelcomeActivity', 'noReset': "Tr.
2022-01-10 19:08:18 1298
原创 appium常见异常
1.appium未启动,目标积极拒绝,重新打开appium server2.会话冲突,报错为faild to start an appium session ,可以重启appium3.每次运行代码都要安装Ui2,在预期能力的json里加上"skipServerInstallation":True4.运行代码找不到adb.exe,检查adb环境,appium没有指定adb路径5.程序无法打开,在手机上手动打开appium setting6.设备未连接,could not find a co
2022-01-08 17:19:20 2459 5
原创 appium触控和操作手机API
# -*- coding: utf-8 -*-# 2022/1/8from appium import webdriverfrom time import timefrom appium.webdriver.common.touch_action import TouchActiondesired_caps = { # 移动设备平台 Android / IOS 'platformName': 'Android', # 平台OS--安卓版本号,写整数位即可 'p.
2022-01-08 17:04:17 646
原创 appium元素定位,页面滑动,按键模拟
# -*- coding: utf-8 -*-# 2021/12/30from appium import webdriverdesired_caps = { "platformName":"Android", "platformVersion":"10", "deviceName":"", "appPackage":"", "appActivility":"", "noReset":True, "newCommandTimeout":60.
2022-01-02 14:21:48 428
原创 appium基础认知
# -*- coding: utf-8 -*-# 2021/12/26#移动原生应用:使用iOS或者Android SDK编写的应用#移动web应用:操作浏览器的应用#混合应用:原生代码操作浏览器的应用#appium框架是一个c/s架构,始终处于一个会话中,客户端与服务器通过http协议沟通#appium服务器-------node.js环境下---接收客户端的预期能力,返回会话ID#appium客户端-------使用者编写的代码-----接收会话ID,发出预期能力#client--.
2021-12-27 22:19:07 284
原创 po模式--简单程度
# -*- coding: utf-8 -*-# 2021/11/25from selenium import webdriverfrom mysettings import url,username,passwordclass Driver: driver = None#确保每次操作都在同一个浏览器上 @classmethod def get_driver(cls,browser_name="chrome"): if cls.driver == N.
2021-12-05 21:49:59 152
原创 下拉框选择
# WebDriver 提供了 Select 类来处理下拉框。注意,只有当下拉框是 select 标签的时候使用from selenium import webdriverfrom selenium.webdriver.support.select import Selectimport time# 实例化一个浏览器对象driver = webdriver.Chrome("D:\\tool\...\chromedriver")# 访问网址driver.get("D:\\test\...\se.
2021-12-05 21:41:15 88
原创 文件的上传
# -*- coding: utf-8 -*-# @project : script# @author : lenovo# @file : 1文件上传.py# @ide : PyCharm# @time : 2021/4/26 20:04from selenium.webdriver.common.action_chains import ActionChainsfrom selenium import webdriverimport win32com.clien.
2021-12-05 21:36:28 100
原创 鼠标事件和键盘事件
# -*- coding: utf-8 -*-from selenium.webdriver.common.action_chains import ActionChainsfrom selenium import webdriverdriver = webdriver.Chrome()driver.implicitly_wait(5)driver.get("http://127.0.0.1:8088/")# 找到用户名输入框,并输入用户名driver.find_element_by.
2021-12-05 21:32:19 103
原创 警告框处理、内嵌网页、多标签页
# -*- coding: utf-8 -*-from selenium import webdriverdriver = webdriver.Chrome()driver.implicitly_wait(5)driver.get("file:///D:/Users/lenovo/PycharmProjects/script/study/seleniumStu/day3/test.html")# 点击对话框driver.find_element_by_id("bu1").click().
2021-12-05 21:29:22 85
原创 css高级语法
#class选择器driver.find_element_by_css_selector('.admin')#ID选择器driver.find_element_by_css_selector('#adc')#标签选择器driver.find_element_by_css_selector('p')#分组选择器,同时满足两个标签driver.find_element_by_css_selector('p,input')#属性选择器driver.find_element_by_css.
2021-12-05 21:14:13 154
原创 窗口截图的两种方式
# 截图截取全屏driver.get_screenshot_as_file("./all.png")ele = driver.find_element_by_css_selector(".activity-list")ele.screenshot("./ele.png")
2021-12-05 20:55:41 193
原创 web页面滚动
window.scrollBy(100,-600)driver.execute_script(window.scrollBy(100,-600))
2021-12-02 23:38:06 222
原创 Xpath语法
# -*- coding: utf-8 -*-from selenium import webdriverdriver = webdriver.Chrome()driver.implicitly_wait(5)driver.get("http://127.0.0.1:8088/login")"""xpath 使用路径表达式来选取 xml 或 html 中的节点或节点集其标准语法如下://tagname[@attribute='value'] // 选取后代节点 ta.
2021-12-02 23:30:30 59
原创 webdriver常用方法
click 单击元素send_keys 对文本框输入内容clear 清除文本框的内容"""from selenium import webdriverdriver = webdriver.Chrome()driver.implicitly_wait(5)driver.get("http://127.0.0.1:8088/")# 找到用户名输入框,并输入用户名driver.find_element_by_name("username").send_keys("libai")..
2021-12-02 23:26:35 220
原创 显式等待与隐式等待
from selenium.webdriver.support import expected_conditions as ec # 提供等待条件的from selenium.webdriver.support.ui import WebDriverWait # 提供等待类from selenium.webdriver.common.by import By # 提供元素寻找方法的from selenium import webdriverdriver = webdriver.Chrom..
2021-12-02 23:19:10 364
原创 元素定位的八种方式
# -*- coding: utf-8 -*-# @project : script# @author : lenovo# @file : 2ui自动化操作流程.py# @ide : PyCharm# @time : 2021/4/21 21:21from selenium import webdriverdriver = webdriver.Chrome()driver.get("http://127.0.0.1:8088/login")"""ui ...
2021-12-02 23:12:41 1562
原创 json和字典之间的转换
#字典和json互相转化#inport json#json.loads(a)把json转为字典import jsona = '{"name":false}'print(json.loads(a))#Falseb = '{"name":null}'print(json.loads(b))#None#swagger路径http://121.41.14.39:8082/doc.html
2021-09-16 07:28:53 399
原创 cookies的基础应用
# -*- coding: utf-8 -*-# 2021/9/9import requests#cookies,访问页面,返回setCookies有jsessionid,账号密码登录----服务器校验成功,#服务器返回响应头,setCookies有有效jsessionid,后续的接口都要带上这个有效的sessionidHOST = 'http://120.55.190.222:7080'url = 'http://120.55.190.222:7080/api/mgr/loginReq'.
2021-09-10 07:10:57 77
原创 外卖项目shop.py
# -*- coding: utf-8 -*-# 2021/8/30import requests#复杂的写类,简单的写方法HOST = 'http://121.41.14.39:8082'class Shop: #所有的接口都需要登录 def __init__(self,inToken): #定义一个实例属性 self.header = {'Authorization':inToken} # self.inToken = i.
2021-08-31 07:11:26 241
原创 外卖项目login.py
# -*- coding: utf-8 -*-# 2021/8/29# resp.text()返回字符串(大概率是json格式),获取网页html# resp.content()返回字节,用于下载图片和文件# resp.json()返回字典,明确服务器返回json数据时使用,# 上面是json转字典# resp.raw()返回原始格式#接口关键性名词透析#token令牌,由服务器产生,存在服务器的内存和硬盘,类似汤泉的手牌,身份验证#登录----->mysql数据库(在数据库中.
2021-08-31 07:10:28 131
原创 pytest框架结合allure报框架的学习和使用
# -*- coding: utf-8 -*-# 2021/8/18import pytestimport allureimport os#定义函数类型----测试用例# def test_f01():# assert 1+1 == 2## def test_02():# assert 1+1 == 3#封装测试类@allure.feature('登录模块')class TestLogin():#登录模块 #测试类--前置操作--初始化 de.
2021-08-20 07:27:58 86
原创 把九九乘法表写入文件
# -*- coding: utf-8 -*-# 2021/8/17with open('D:/99乘法表.txt','w+') as file1: for i in range(1,10): for j in range(1,i+1): file1.write(f'{j}*{i}={i*j}\t') file1.write('\n')
2021-08-17 22:31:32 976
原创 pytest框架、allure报告框架的简单使用,数据驱动、setup和teardown装饰器、allure的层级
#test_pytest#pytest是一种自动化测试框架,是python的第三方单元测试框架,向下兼容unittest#预期结果,实际结果#pip install pytest,或者使用豆瓣源,清华源等进行安装#pytest命名规范#文件名应当以test_开头,或者以_test结尾#类应当以Test开头,且类当中不能有__init__方法#方法或函数应当以test_开头#断言必须使用assert 结果为真,断言不做事情,结果为假,断言生效,抛出异常AssertionErrora..
2021-08-17 21:50:24 691
原创 正则匹配的常用的通配符
#210317_正则表达式#正则表达式,其实就是从一段字符串中提取出需要的字符import re #加载正则表达式模块#re.findall(参数1,参数2,参数3) 参数1表示用什么规则进行提取,参数2表示从哪个字符串进行提取#参数3一般有re.I 表示不区分大小写,re.S 匹配多行中满足条件的值str1='abcadefg'#. 通配符,匹配某个字符前面或后面的一个字符print(re.findall('a.',str1)) #提取a后面的一个字符,返回值是列表,包括条件a也返..
2021-08-14 16:56:43 705
原创 抛出异常和日志模块
#一个标准的try except语句,至少要有一个except,也可以有多个except,也可以加一个else语句,以及finally语句try: int1=int(input('请输入一个整数')) print(1/int1)except ZeroDivisionError: print('0不能作为分母')except ValueError: print('您输入的不是整数')except: #以上的异常没有捕捉到的情况下,此处起到兜底的作用 pri..
2021-08-12 22:33:46 152
原创 私有属性、私有方法、多态、多继承
#210314_面向对象高级#私有属性,不能被子类继承,在属性的前面加上__就变为了私有属性#私有方法,不能被子类继承,在方法的前面加上__就变为了私有方法#__只在前面加,后面不加,一般前后都有__的,属于类当中自带的方法或属性class Class_test1: __str1='A' #私有属性 def __init__(self): pass def __method1(self): #私有方法 print('这是一个私有方法')..
2021-08-12 21:51:04 79
原创 面向对象进阶和继承
#210314_面向对象进阶class Rectangle: def __init__(self,length,width): self.length=length self.width=width def permerter(self): #只能由实例调用,称之为实例方法 return (self.length+self.width)*2 def area(self): return self.length*s..
2021-08-11 06:59:04 82
原创 面向对象基础
#面向对象基础#类和实例#新建一个长方形的类class Rectangle: def __init__(self,length,width): self.length=length self.width=width def permerter(self): return (self.length+self.width)*2 def area(self): return self.length*self.widt..
2021-08-11 06:46:35 80
原创 模块和包的使用
#一个python文件就是一个模块#存放py文件的目录,我们称之为包,或者文件夹#如果文件夹中有一个__init__.py,那么就称之为包#如果是包,必定会有__init__.py,如果没有,则是一个普通的文件夹#当加载一个包时,会自动执行一次__init__.py中的内容import time #加载时间模块time.sleep(1)# 标准库,不需要安装,加载就能使用import this #python之禅#第三方库,需要安装后才可以使用import requests..
2021-08-10 23:02:35 55
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人