![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 77
胖困困
有趣的灵魂
展开
-
appium项目实战+框架(2):复杂用例
PO模式组件化封装(分层),以功能相关进行分类通过文本定位元素两种:1.locator 写死locator_shijuan = ('xpath', '//*[@text="Linux--初级--第1套"]')2.函数设置参数def choose_tiku(self, name): """通过题库的名称选择题库""" locator = ('xpath', f'//*[@text="{name}"]')...原创 2022-01-05 19:12:54 · 313 阅读 · 0 评论 -
appium项目实战+框架(1):登录功能PO模式
框架(参考web框架)以实例进行说明:编写app自动化测试用例的流程:第一步,手工测试(设计用例)优化方向:更好用;更易懂;维护更方便;更通用;扩展性强。没有使用PO模式前:# 登录的测试用例from common.login_page import LoginPagefrom common.native_page import NativePagedef test_login_failed(app): """登录用例 测试用例步骤: 1.启动app原创 2022-01-05 09:52:24 · 672 阅读 · 0 评论 -
appium-元素定位
在web测试中,可以使用F12辅助元素定位,app中没有这样的工具,需要安装第三方的工具,目前主流的工具有:androiduiautomatorviewer weditor appiuminspect1.appiuminspect是appium服务内置的工具,点击搜索按钮即可打开appiuminspectinspect配置界面,Desired Capabilities参数与caps参数一致,配置好后另存为即可,方便下次直接使用。然后点击Start Session开始会话。...原创 2021-12-26 20:34:24 · 1730 阅读 · 0 评论 -
appium快速使用
Appium是一个开源的测试自动化框架,可以与原生的、混合的和移动的web应用程序一起使用。它使用WebDriver协议驱动IOS、Andriod和Windows应用程序。国内比较出名的框架appium airtest uiautomator2(python)1、启动一个app自动化程序的步骤打开模拟器(本地使用雷电模拟器),或者连上真机 cmd命令行输入adb devices,确保能找到模拟器 ...原创 2021-12-22 18:53:17 · 2243 阅读 · 1 评论 -
appium环境安装
1、环境依赖appium服务(appium desktop,类似于chromedriver.exe) Appium-Python-Client(pip install Appium-Python-Client) 手机,模拟器或者真机,雷电模拟器,genymotion,夜神,逍遥,mumu开发者模式USB调试模式连接电脑时,手机窗口允许授权java jdk 1.8+64位 android环境 adt-bundle apk包2、appium运行原理python----h.原创 2021-12-20 19:59:03 · 1760 阅读 · 0 评论 -
web阶段内容总结
1.selenium原理2.扩展:关键字驱动关键字驱动和数据驱动的区别在于:不仅隔离了数据,而且把需要执行的动过也以字符串的形式,存放到表格当中。和数据驱动相同的是,它还是只有一个通用的测试执行函数。当运行测试脚本时,每条数据和动作会一起作为参数传入执行函数中。我们来举一个实际的例子,首先创建一个excel/yaml文件存储一条用例的所有测试步骤,需要调用的操作和数据。yaml文件中代码:# - 表示list- # 访问url action: goto param原创 2021-12-19 21:54:49 · 179 阅读 · 0 评论 -
web项目实战+框架(5)-allure测试报告和Jenkins
1.alluer安装第一个是安装包,allure-command-line,运行报告服务,下载地址:https://github.com/allure-framework/allure2/releases/tag/2.17.2解压后,可以通过cmd运行allure.bat,也可以通过配置环境变量运行第二个是allure的python绑定包,pipinstallallure-pytestpytest使用语法,--alluredir=outputpytest.main(['--al..原创 2021-12-19 16:04:59 · 968 阅读 · 0 评论 -
web项目实战+框架(4)-复杂用例的设计
locator分层 隔离元素定位表达式和浏览器操作,当元素定位表达式发生变化时,只需要修改元素定位表达式。方式1:直接放在po页面对象,作为类属性。分层前代码:from selenium.webdriver.common.by import Byfrom pages.basepage import Pagefrom setting import config class LoginPage(Page): url = config.host + '/User/logi..原创 2021-12-17 21:19:24 · 902 阅读 · 0 评论 -
web项目实战+框架(3)-深入分层设计
本节内容:base url 参数提取 登录状态 数据驱动 元素定位层位 basepagePO模式是什么?1、字面意思,页面对象模型;2、本质上就是封装PO模式的作用:1、可读性,2、复用性,3、简化;4、页面操作个测试用例隔离,5、扩展和可维护性。UI/WEB自动化测试数据驱动:数据驱动成本高,不同步骤需要编写不同的用例函数。...原创 2021-12-16 09:13:51 · 499 阅读 · 0 评论 -
web项目实战+框架(2)-自动化用例设计/PO模式
1.概述po模式是由martin flower提出的ui测试模式。selenium.dev也对这个模式进行了详细的阐述。这种思想把页面的元素操作封装成类当中的方法,在测试过程中不再需要关注页面的结构,而只需要关心执行的操作。在没有使用po模式之前,测试函数基本上都是像这样的代码:这样的代码实现起来非常快速方便,当时维护起来却麻烦一些。首先,当前端页面改变后,需要到处检查是否哪些代码需要改动;其次,阅读代码时只知道执行了什么操作,却不理解具体做了什么业务。实行po模式以后,代码会分成.原创 2021-12-07 19:07:14 · 927 阅读 · 0 评论 -
web项目实战+框架(1)-自动化应用场景、需求分析
主要内容:ui自动化测试在整个测试过程中占据的地位 ui测试的特征(用户界面:测试点,测试策略,端对端的过程:系统测试) ui的自动化测试(测试计划,整体执行相关的策略) ui自动化测试的流程(需求分析,测试计划,编写用例,测试执行,报告产出) --v0:跑通流程,主要包括:浏览器的正常打开,网页的正常打开,功能(点击,用户输入)测试用例(注册,登录),断言(页面的表现是否符合预期,元素的状态(text,属性)) --v1:po模式优化...原创 2021-12-06 22:10:22 · 520 阅读 · 0 评论 -
web页面组成之dom对象/页面操作(js操作滚动条/日期/文件上传)
主要内容:JavaScript(html+css+JavaScript) DOM 在浏览器中直接运行代码 打开新窗口 窗口的滚动 修改页面的元素状态(属性,text,html)-时间选择控件 selenium execute_script 文件上传1.JavaScript前端工程师学的编程语言(html,css,JavaScript)为什么所有的前端都需要去学JavaScript?JavaScript负责页面的动作,跳转等动态化的效果 所有的浏览器都内置安装了JavaSc.原创 2021-12-03 09:13:48 · 857 阅读 · 0 评论 -
web页面:浏览器操作
鼠标操作:双击、右击、悬停、拖拽、按键管理用户输入操作:单选,多选,select,快捷键文件上传:JS去修改一.鼠标操作1. 悬停# 鼠标悬停(哪个元素)el = browser.find_element(By.XPATH, "//a[contains(text(),'HTML / CSS')]")# 悬停,ActionChains下面的动作方法必须要再机上perform()才能生效ActionChains(browser).move_to_element(el).perform原创 2021-11-30 18:47:44 · 1044 阅读 · 0 评论 -
web页面:窗口切换
1.标签页切换在某个窗口上点击某个链接在新标签页显示新窗口时,如果想要点击新标签页的元素时,需要进行窗口切换。driver.switch_to.window('窗口名称')from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.suppor原创 2021-11-28 20:21:14 · 2507 阅读 · 0 评论 -
web页面:xpath/css选择器元素定位和等待
1.xpath元素定位支持所有的元素属性 支持text文本 可以通过标签名 可以通过元素之间的关系 要素和要素之间可以进行任意形式的组合通过浏览器找到元素的xpath路径:首先F12,选中元素的html定义代码,鼠标右键->copycopy Xpath,相对路径,//*[@id="kw"]copy full Xpath ,绝对路径,/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input优先选用相对路径,因为原创 2021-11-26 20:04:27 · 1759 阅读 · 0 评论 -
web页面:元素定位
web自动化测试核心内容:元素定位 网页操作 等待 pytest+selenium组合使用 项目实战本节内容主要讲元素定位。1.为什么要进行元素定位?操作元素2.selenium如何进行定位元素?自动化去查找元素的方法:网页的页面结构(F12查找,selenium在用的查找方法) 坐标,受页面大小影响,selenium不支持 图像识别,消耗CPU资源但酷炫,实用性不高,selenium不支持网页的页面结构:由各种各样的网页标签<>构成,形成很复杂.原创 2021-11-21 22:45:00 · 1043 阅读 · 0 评论 -
web自动化测试:seleniumwebdriver环境搭建
seleniumselenium是浏览器自动化工具(使用代码控制浏览器,执行浏览器操作)+测试工具(unittest/pytest)1.使用selenium的前提安装浏览器(以chrome为例) 使用命令安装,pipinstallselenium webdriver驱动的安装2.selenium快速使用...原创 2021-11-21 22:04:01 · 1704 阅读 · 0 评论 -
Docker入门
一.为什么要使用Docker?传统的安装环境的方式:1、没有固定的脚本可以实行2、系统发行版不一样,命令不一样3、系统版本不一致,进行不同的配置4、python版本保持一致5、没有办法移植docker能解决传统安装的问题,它和虚拟机差不多-不管你想装什么软件,什么环境,只需要下载这个软件的镜像,通过docker运行就可以。-保证版本的一致性,避免环境的不兼容。docker缺点就是必须先安装它,依赖于linux系统。docker 镜像和容器镜像:相当于安装包原创 2021-11-19 20:30:30 · 2700 阅读 · 0 评论 -
pytest框架基础
1.生成时间戳的html报告# pytest 运行项目import pytestfrom datetime import datetime# 获取时间戳,now()获取现在的时间,strftime()转化成字符串report_time = datetime.now().strftime("%Y%m%d%H%M%S")# 字符串拼接filename = f'pyreport-{report_time}.html'# 收集用例并运行用例# 命令行参数放入列表中pytest.main([原创 2021-11-16 19:19:27 · 1574 阅读 · 0 评论 -
pytest框架入门
pytest属于第三方库,使用前,请先安装:pip install pytest对于单元测试框架的核心功能:收集用例,进入目录,运行 pytest 指令cd 目录路径:进入目录pytest:执行测试用例制定用例函数的定义规则,以test开头支持普通函数,测试类"""pytest用例编写规则很灵活:1、直接定义函数,不需要测试类2、编写测试类,不继承unittest.TestCase3、编写测试类,继承unittest.TestCase,可以直接迁移(兼容)测试函数还是原创 2021-11-16 17:40:25 · 875 阅读 · 0 评论 -
项目实战-mock测试
1.什么是mock?mock测试(mocks)是以可控的方式模拟真实的对象行为。程序员通常创造模拟对象来测试对象本身该具备的行为,类似汽车设计者使用碰撞测试假人来模拟车辆碰撞中人的动态行为。2.为什么要使用mock?之所以使用mock测试,是因为真实场景很难实现或者短期实现起来很困难。主要场景有:真实对象可能还不存在(接口还没有完成开发); 真实对象很难搭建起来(第三方支付联调); 真实对象的行为很难触发(例如,网络错误); 真实对象速度很慢(例如,一个完整的数据库,在测试之前可能需要原创 2021-11-16 15:48:54 · 1145 阅读 · 0 评论 -
项目实战-jenkins安装/插件/配置/job/定时任务
讲持续化集成之前,先来看下自动化测试的运行方式。一.自动化测试的运行方式1.打开pycharm有时候没有pycharm这个工具,比如1,代码在远程仓库当中(本地没有) 2,不一定是在个人电脑上运行自动化测试用例,有专门的服务器或者电脑,比如linux系统,不一定有pycharm(pycharm只是我们在本地编写代码的一个工具) 3,这时候要用命令行去运行py文件:python 路径\run.py 4,在运行之前,通过pip install -r 路径\requirements.txt原创 2021-11-09 18:39:19 · 799 阅读 · 0 评论 -
项目实战-业务流的测试
业务流本质上还是接口依赖,接口关联:1.if实现动态数据替换,详见项目实战-充值接口优化(接口关联)_Ly_LittleStar的博客-CSDN博客 正则表达式(第一个技术) 数据提取(extract) 以投资接口为例 进一步优化(封装)...原创 2021-11-09 10:29:23 · 556 阅读 · 0 评论 -
项目实战-正则表达式
几乎所有的编程语言都支持正则表达式。字符串的模糊匹配技术。原创 2021-11-07 17:40:55 · 919 阅读 · 0 评论 -
项目实战-充值接口
第一步:根据接口文档,得到url,headers,json数据,然后在postman中进行充值接口的测试用例数据的校验,得到返回数据作为充值接口测试用例的期望值。第二步:创建测试用例excel数据。第二步:编写自动化测试脚本。import requestsimport jsonfrom common.excel import read_excelfrom ddt import ddt, datafrom setting.config import config_file, host原创 2021-10-29 18:47:37 · 1426 阅读 · 0 评论 -
pymysql数据库操作
主要内容:1.接口关联(充值接口访问前,必须先登录,获取token)2.数据库操作--如何通过python操作数据库 --数据库的断言(项目使用)首先来了解数据库操作,需要先明白手工是如何操作数据库的。使用什么软件访问数据库?比如Navicat 提供数据库的账号密码,数据库名称而自动化测试操作数据库也是相同的原理,接下来看下自动化是如何操作的(安装第三方库:pip install pymysql)。数据库的操作:1.建立连接2.得到一个游标的对象(数据库的操作都是通过游标)原创 2021-10-29 17:33:28 · 339 阅读 · 0 评论 -
项目框架搭建
1.自动化测试流程需求分析。需求文档,接口文档。抓包接口 计划。进度?是否自动化?优先级? 测试用例(是从手工测试提取出来的) 评审 执行,(写代码) 报告接到一个项目,在需求分析的阶段,我们需要熟悉的部分包含:需求文档,功能展示以及交互 接口文档,后端数据是怎么传输 数据库账号,数据库地址,结构帮大家熟悉整个项目的轮廓,表字段 测试环境/环境怎么搭建 原型图测试计划一般由项目经理制定,主要是时间、技术、进度、优先级的管控,可以确认哪些功能需要引入自动化测试(自动化测试技术py原创 2021-10-22 18:09:14 · 2340 阅读 · 0 评论 -
Requests使用
requests主要的用法:发送get,post请求 定义请求头 参数url,form-data,json 响应,content,text,json 怎么处理token,session 封装通用的请求接口的函数jmeter,postman可以用来访问接口,requests也是用来访问接口,作用是相同的,都是http客户端。requests是第三方库,需要安装:pip install requests学习requests之前,先来简单了解下flask创建接口(pip install f原创 2021-10-17 15:44:25 · 1110 阅读 · 0 评论 -
session和token鉴权
1.什么是token?在接口的响应结果中,经常会出现类似这样的返回值:{"msg":"success","token":"eysdjsdAshdjhfjisjfoisjdiv"}往往需要在访问下一个接口时传递token数据。curl -x POST -H Authorization:eysdjsdAshdjhfjisjfoisjdiv<http:127.0.0.1:5000/user>{"alg":"HS256","typ":"JWT"}所以token原创 2021-10-17 13:30:48 · 1105 阅读 · 0 评论 -
Python-接口自动化测试之接口基础
1.什么是API接口?项目地址:http://api.lemonban.com/futureloan服务端—API接口—>客户端(浏览器)接口定义规则,可以在接口文档查看:访问地址 请求方法get/post 请求参数什么是接口测试?测试接口的返回数据是否和预期一致(assert)。可以使用浏览器、postman、jmeter和soupui等接口测试工具,也可以通过代码访问。2.HTTP协议接口需要使用协议才能完成,最广泛使用的协议是http协议。HTTP(超文本...原创 2021-10-17 11:25:42 · 7526 阅读 · 0 评论 -
Python-动态获取项目路径
项目框架如下图所示:没有获取动态目录之前,我们在测试用例读取excel内容时需要写上绝对路径,如果在多个py文件中都这样定义,excel文件路径发生变化时,维护起来相对麻烦,接下来就来看下如何动态获取文件路径? test.login.py内容如下:import unittestfrom funcs import loginfrom common.excel import read_excelfrom ddt import ddt, data# r :\不转义file_path =原创 2021-10-15 22:00:00 · 1420 阅读 · 0 评论 -
Python-框架模型搭建之分层设计
框架搭建/框架设计,说白了就是怎么组织代码,或者就是说怎么创建包,模块。需要组织或者搭建的代码包有哪些呢?自动化测试的用例放在哪儿? 入口 main函数,收集用例放在哪? 测试数据,又该放在哪? 测试报告放在哪? 配置文件放在哪里? 日志文件放在哪里? excel操作 托管提交到公司的代码库...原创 2021-10-13 12:26:58 · 1144 阅读 · 0 评论 -
Python-日志模块logging的使用
通过logging产生日志时,需要先定义:import logging# 得到一个日志收集器,logger# 记录日志的笔,可以写内容# logger 就是笔,专门去记录py这样的事项logger = logging.getLogger('py')# 设置笔的级别logger.setLevel('INFO')# 显示的东西,Handler,相当于笔记本,logger可以在笔记本上写如信息# 默认笔记本:StreamHandler,输出到控制台handler = logging.S原创 2021-10-13 12:23:32 · 411 阅读 · 2 评论 -
Python-配置文件和log
1. 配置文件1.1 什么是配置setting?计算机屏幕宽度 环境变量 手机wifi开关,4g,True 命令行配置选项 一个自动化的测试用例里面哪些东西可以作为配置选项1.2 配置文件是什么?配置文件是用于配置计算机程序的参数和初始化设置的文件。如果没有这些配置,程序可能无法执行。比如现在你要开发一款app,当部署app时,需要配置它的host地址、数据库地址、数据库名称,这些可以作为配置项写入配置文件。当项目上线,需要换一个环境运行时,只需要修改配置文件,不需要去代码当中导.原创 2021-10-11 12:48:34 · 421 阅读 · 0 评论 -
Python-openpyxl之二次封装
1.excel结合测试用例的使用测试自己写的函数是否可以正常使用,一般来说就简单的使用如下方法进行就可以:# 使用 if __name__ == '__main__'和直接调用的区别就是其他模块中导入该模块时不会执行下面的代码if __name__ == '__main__': result = read_excel('cases.xlsx','Sheet1') print(result)from openpyxl import load_workbookdef re原创 2021-10-01 16:53:15 · 391 阅读 · 0 评论 -
Python操作excel之openpyxl
测试数据的运转:手工写到excel --> python读取excel数据 --> 自动化测试方法pycharm中需要安装第三方库,专门去操作excel, 第三方库主要有:openpyxl xlrd --包含读写操作权限,比较复杂,不讲 pandas--重量级,用的openpyxl,主要用于数据分析所以我们主要学习下openpyxl就可以了。1.安装openpyxl安装命令:pip install openpyxl位置:控制台切换到Terminal,输入pip i...原创 2021-10-01 15:16:43 · 871 阅读 · 0 评论 -
Python单元测试unittest
1.单元测试对功能/代码的最小单元进行测试。对函数或者类当中的方法进行测试就是单元测试。在python当中进行测试时,使用assert,而不是if...语法:assert预期结果 ==实际结果当使用assert进行断言时,如果测试通过,程序正常执行,测试不通过会报错AssertionError# if actual == expected:# print('ok')# else:# print('not ok')# assert 断言assert a..原创 2021-09-27 23:07:05 · 1424 阅读 · 0 评论 -
Python面向对象:类和对象-动态获取属性
1)getattr()函数用于返回一个对象属性值。语法:getattr(对象,'属性')获取对象属性有两种方法:# 获取类属性 print(Mobile.color) ==> pink# 获取属性不常用的方法print(getattr(Mobile, 'color')) ==> pink# getattr的属性参数是一个字符串类型,意味着可以通过用户进行输入prop_name = input('请输入属性名称:') ==> colorprint(getattr..原创 2021-09-27 20:30:13 · 1327 阅读 · 0 评论 -
Python面向对象:类和对象-继承
继承:即一个派生类(derived class)继承基类(base class)的字段和方法,简单点就是子承父业。#父类class Mobile: # 类属性:所有成员的共同特征 # call = True def __init__(self, brand, color): # 实例属性:个体特征 self.brand = brand self.color = color def sale(self, price,原创 2021-09-25 12:46:28 · 233 阅读 · 0 评论 -
Python面向对象:类和对象-方法
1.方法的定义类和对象中:成员所具有的特征我们叫做属性,而成员的行为,就是实例方法。在类的作用域里面定义的函数,就叫方法,是特殊的函数。比如初始化方法__init__,我们也叫作初始化函数。把带有self 固定参数的方法叫做实例方法,这个方法属于对象/实例的方法。2.实例方法的调用1)实例方法的调用,只能由实例调用,类不能调用实例方法。语法:对象.方法()# 创建对象mobile = Mobile('apple', 'pink')# 对象调用实例方法mobile.原创 2021-09-25 12:34:35 · 847 阅读 · 0 评论