python
葬爱家族小阿杰
这个作者很懒,什么都没留下…
展开
-
元组类型数据转换为列表
a = (('5699461012b1cdb956f3bdf5df8cc472',), ('fcc2a2eec59209b14c1eb5a7435800dc',), ('6b43c9fe2dc3bd73bd051055a9e6dda0',), ('584d084095794d7c8ff3091305f67b6e',), ('4715e67cfbe736c85fa74f140f9e7a89',), ('8d0a6f074ad4578445e3f22303af67ef',))b = []原创 2022-03-07 16:05:46 · 1434 阅读 · 0 评论 -
通过python代码启动appium
通过python代码启动appium"""关于appium的启动1、桌面版(咱们现在用的):运行方式一:点击软件图标运行方式二:cmd命令行运行appium:appium的路径:C:\Users\Admin\AppData\Local\Programs\Appium\resources\app\node_modules\appium\build\lib①CD切换上的路径②dir(列出文件)③找到main.js后执行node main.js 参数 -p:原创 2022-02-28 09:40:54 · 1393 阅读 · 1 评论 -
Appium-混合应用、小程序启动
区分原生、H5打开手机手机开发者模式,同时打开手机系统设置-开发者选项-显示布局边边界----如果页面是整块,则为H5页面;如果页面标注一个个控件,则为原生Html5 webview元素定位工具的实现一、工具选择webview元素定位有三种方式:使用driver.page_source方法,将获取到的页面内容写入到一个html文件中,然后使用浏览器打开html文件,使用F12调试用具进行元素定位chrome浏览器自带的调试工具 Developer Tools,在chrome浏览器中输入原创 2022-02-16 18:13:36 · 1148 阅读 · 1 评论 -
allure测试报告+Jenkins集成
前提:得装了jdk1.8allure测试报告的样子是这样的,它能显示你运行了几次,然后每次运行有多少次成功多少次失败,之前的和现在的下载地址:链接:https://pan.baidu.com/s/1bG0a0DYxBoUpHtWM3M4n_g提取码:qtv8将文件减压,然后把bin文件目录下的allure.bat的路径放到系统环境变量的path里然后cmd 运行allure 命令,显示这样算成功与pytest集成需要安装一个叫做 pytest-allure的插件库命令:pip Ins原创 2022-01-21 10:31:27 · 107 阅读 · 0 评论 -
Web自动化之上传文件
第一种:通过元素的input属性:driver = webdriver.Chrome()driver.get('https://www.layui.com/demo/upload.html')# 方式一:找到对应的input标签,直接使用send_keys输入文件路径input_ele = driver.find_elements_by_xpath('//button[@id="test1"]/../input')input_ele.send_keys(r'C:\images\1.gif')原创 2022-01-10 15:09:28 · 820 阅读 · 0 评论 -
Web自动化之selenium鼠标键盘操作以及JS操作
一、鼠标操作from selenium.webdriver import ActionChainsActionChains:鼠标操作类①click:鼠标左击②double_click:鼠标双击③content_click:鼠标右击④move_to_element:鼠标移动到某个节点⑤click_and_hold:鼠标左键按下鼠标⑥move_by_offse:鼠标相对当前位置进行移动⑦grag_and_drop():在一个位置按下鼠标,到另一个位置释放release:释放鼠标perf原创 2022-01-05 11:26:48 · 1395 阅读 · 0 评论 -
Web自动化之元素等待和iframe切换
定位表达式在浏览器上能够定位到,放到代码中定位不到的原因:1、网页内容未加载完,就去找元素,导致找不到解决方案:加等待等待方式:1、强制等待:time.sleep(2):代码强制等待2s中后再往下继续运行2、隐式等待:通过driver.implicitly_wait()方法设置隐式等待的时间,设置一次对driver的整个生命周期生效。等待元素出现再往下执行,如果元素超过了设置的最大等待时间还未出现会报错:等待超时。注:隐式等待的作用域是全局,所以一般设置在整局代码的头几行。3、显示等待原创 2022-01-04 19:19:50 · 981 阅读 · 0 评论 -
Web自动化之selenium元素定位方式
Selenium基本操作:1、环境安装• selenium的安装pip install selenium• 浏览器对应的ChromeDriver驱动①Chromedriver所有版本下载链接:https://chromedriver.storage.googleapis.com/index.html②将chromedriver.exe放到python安装路径下-----------------------------driver对象的方法---------------------------原创 2021-12-30 16:34:56 · 495 阅读 · 0 评论 -
Web自动化之JS基本操作
前端开发最基本的三个要素:1、HTML:页面结构:可以把他看成一个文档,定义展示页面的内容结构。2、CSS:页面表现:元素大小、颜色位置、隐藏或显示,部分动画效果。3、JavaScript:页面行为:部分动画效果,页面与用户的交互,页面功能。JS操作页面1、定位元素:2、修改元素:• 获取元素属性值var ele = document.getElementById(“test”).value;• 给元素的属性赋值document.getElementById(“test”).value原创 2021-12-28 11:29:05 · 770 阅读 · 0 评论 -
Pytest参数化parametrize
1、传入单个参数pytest.mark.parametrize(argnames,argvalues)argnames:参数名 argvalues:参数对应的值,类型必须为可迭代类型,一般为 listimport pytestlists = ['python', 'java', 'c++', 'ruby']class Test01(): @pytest.mark.parametrize('item', lists) def test_001(self, item):原创 2021-12-27 14:44:10 · 516 阅读 · 0 评论 -
Pytest中allure测试报告
pip install pytest-html①第一种:log普通文本:TextTestRunner– resultlog=report/demo.txt 相对路径②第二种:xml,生成xml文件–junitxml=report/demo.xml #jenkins使用html和xml标记性语言③第三种:html HTMLTestRunner–html=report/demo.html④第四种:allure:集成allure报告平台allure是一个通用的测试报告的框架,python、ja原创 2021-12-27 14:25:56 · 319 阅读 · 0 评论 -
Pytest中assert断言详细使用
前言• 与unittest不同,pytest使用的是python自带的assert关键字来进行断言• assert关键字后面可以接一个表达式,只要表达式的最终结果为True,那么断言通过,用例执行成功,否则用例执行失败assert小栗子想在抛出异常之后输出一些提示信息,执行之后就方便查看是什么原因了# 异常信息def f(): return 3def test_function(): a = f() assert a % 2 == 0, "判断 a 为偶数,当前 a 的原创 2021-12-27 13:59:14 · 941 阅读 · 0 评论 -
Pytest中skip、skipif跳过用例
前言• pytest.mark.skip 可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能• 希望满足某些条件才执行某些测试用例,否则pytest会跳过运行该测试用例• 实际常见场景:跳过非Windows平台上的仅Windows测试,或者跳过依赖于当前不可用的外部资源(例如数据库)的测试@pytest.mark.skip跳过执行测试用例,有可选参数reason:跳过的原因,会在执行结果中打印import pytest@pytest.fixture(autouse=True原创 2021-12-27 13:46:59 · 289 阅读 · 0 评论 -
Pytest用例打标签
用例打标签:pytest.mark1、在pytest.ini文件中markers这个配置项注册标签# pytest.ini[pytest]markers= smoke:冒烟测试 #冒号后面是标签的描述,可不填 huigui:回归测试2、①通过pytest.mark.标签名给单个用例加一条或多条标签import pytestclass TestClass(): @pytest.mark.smoke @pytest.mark.huigui d原创 2021-12-27 11:38:39 · 951 阅读 · 0 评论 -
Pytest自定义用例顺序
Unittest用例执行顺序unittest框架和pytest框架编写的测试用例执行顺序,默认根据ACSII码的顺序加载测试用例,数字与字母的顺序为:09,AZ,a~z。1.对于类来说,class TestAxx 会优先于class TestBxx被执行。2.对于方法来说,test_aaa()方法会有优先于test_bbb()被执行。对于测试目录与测试文件来说,unittest同样是按照这个规则来加载测试用例的。背景:我们写接口测试用例的时候,可以按上下接口顺序给它命名test_01…test_原创 2021-12-27 10:38:03 · 521 阅读 · 0 评论 -
Pytest中fixture夹具
Unittest和Pytest前后置区别这里抽用例前置与后置的区别来讲,先看unittest的前后置使用:import unittestclass TestFixtures01(unittest.TestCase): # 所有用例执行前执行 def setUp(self) -> None: print("setUp开始") def tearDown(self) -> None: print("tearDown结束") #.原创 2021-12-24 17:06:18 · 767 阅读 · 0 评论 -
Pytest编写用例规范
--------------------------------Pytest编写用例------------------------------------①用例文件:test开头②以test开头的函数会当成一条测试用例③以Test开头的类会当成测试用例类测试类中,以test开头的方法,会当成一条测试用例Pytest配置文件:执行pytest时会根据pytest.ini中定义规则来执行用例自定义pytest识别用例规则:在run.py文件同级目录中新建pytest.ini[pytest]py原创 2021-12-24 16:37:48 · 535 阅读 · 0 评论 -
python中mock的基本使用
什么是mock?mock在翻译过来有模拟的意思。这里要介绍的mock是辅助单元测试的一个模块。它允许您用模拟对象替换您的系统的部分,并对它们已使用的方式进行断言。在Python2.x 中 mock是一个单独模块,需要单独安装。pip install -U mock在Python3.x中,mock已经被集成到了unittest单元测试框架中,所以,可以直接使用。可能你和我初次接触这个概念的时候会有这样的疑问:把要测的东西都模拟掉了还测试什么呢?但在,实际生产中的项目是非常复杂的,对其进行单元测原创 2021-12-23 16:28:44 · 1160 阅读 · 0 评论 -
项目开展接口自动化考虑点
项目开展接口自动化:一、可行性分析:项目适不适合:1、项目是否频繁迭代2、项目的开发模式:①前后端不分离的项目:接口对于业务覆盖率不高②前后端分离(主流)的项目:按基本上所有的业务都能覆盖测试团队的人员:二、如何下手、怎么开展?1、接口文档:找开发或者抓包:参数不全,每个参数什么意思不清楚2、工具测试接口3、进行优先级划分:①核心的接口(主流程)②其他稳定的接口③不是特别好覆盖用例(放到最后有时间再去加)三、技术选型:1、通过工具去做(postman,jmeter)2、通原创 2021-12-22 16:59:26 · 572 阅读 · 0 评论 -
接口关联-时间戳+token+加密(验证)封装
接口关联采用:时间戳+token+加密(验证)import base64from time import time# 需要安装rsa模块, pip install rsaimport rsaclass HandleSign: server_pub = """ -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQENQujkLfZfc5Tu9Z1LprzedE O3F7gs+7bz原创 2021-12-22 16:43:57 · 1093 阅读 · 0 评论 -
unittest生成报告发送到邮箱或钉钉
import unittestfrom unittestreport import TestRunnerimport osfrom commons.handle_path import REPORTS_DIR,TESTCASSE_DIRfrom unittestreport.core.sendEmail import SendEmailclass RunTest: def main(self): suite=unittest.defaultTestLoader.disc原创 2021-12-22 16:38:54 · 380 阅读 · 0 评论 -
python自动化之投资接口用例及前面常用类封装
管理员登陆、普通用户登陆、添加项目、审核可以封装起来,后续测试用例类中会频繁调用,导致代码冗余。# fixtureimport requestsfrom jsonpath import jsonpathfrom common.handle_conf import confclass BaseTest: @classmethod def admin_login(cls): '''---------------管理员登陆-----------------'''原创 2021-12-21 15:45:33 · 91 阅读 · 0 评论 -
python自动化之审核接口用例
审核接口用例import unittestimport osimport requestsfrom unittestreport import ddt, list_datafrom common.handle_excel import HandleExcelfrom common.handle_path import DATA_DIRfrom common.handle_conf import conffrom common.tools import replace_datafrom co原创 2021-12-20 14:14:39 · 685 阅读 · 0 评论 -
python自动化之添加项目测试用例
添加项目测试用例:import unittestimport osimport requestsfrom unittestreport import ddt, list_datafrom common.handle_excel import HandleExcelfrom common.handle_path import DATA_DIRfrom common.handle_conf import conffrom common.tools import replace_datafrom原创 2021-12-20 11:22:11 · 2756 阅读 · 0 评论 -
python自动化之封装获取配置文件
封装获取配置文件:# config.ini[logging]name = zangailevel = DEBUGfilename = testlog.logsh_level = DEBUGfh_level = INFO[env]base_url = http://api.dsad.site:8000[test_data]username = password = [invest_user]mobile= pwd= [test_admin]mobile= pwd=[m原创 2021-12-20 11:19:30 · 1552 阅读 · 0 评论 -
python自动化之封装文件路径
封装文件路径:import os# 获取根目录文件BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# 获取测试数据文件路径TESTCASSE_DIR = os.path.join(BASE_DIR, 'testcase')# 获取测试用例文件路径DATAS_DIR = os.path.join(BASE_DIR, 'datas')# 获取配置文件路径CONF_DIR = os.path.join(B原创 2021-12-20 11:14:19 · 1176 阅读 · 0 评论 -
python 替换字符串最后一位
#字符串string="6123456"#替换最后一位6string.[::-1].replace('6','', 1)[::-1]原创 2021-12-16 22:04:55 · 2658 阅读 · 0 评论 -
正则表达式及运用
替换数据中的数据:①原始替换方式存在问题:用例中每个需要替换的参数都要调一次replace方法class Test01: id = 10 name = 'tony' data = '0011' title = 'OK'Params = "{'id': '#id#', 'name': '#name#', 'data': '#data#', 'title': '#title#', 'aaa': 111}"Params = Params.replace('#id#',原创 2021-12-15 15:36:33 · 2572 阅读 · 0 评论 -
pymysql使用和充值接口数据库校验
①连接数据库con = pymysql.connect(host='api.ggg.com', port=3306, user='future', password='123456', charset='utf-8', # 执行sql返回数据已字典格式返回,默认是元组原创 2021-12-14 17:54:57 · 1958 阅读 · 0 评论 -
python sorted()函数的key参数
一、首先介绍下sort()与sorted()的区别:1、sort() 是 list 的方法,只有 list 能用,而sorted() 是内置函数,可以对所有可迭代的对象进行排序操作;sort()在对列表排序时需要单独使用,sort()方法是在原地对列表排序,是对原列表的直接操作,并不会返回一个新的列表。sort()方法需要单独使用,如果和赋值,打印等方法一起使用,结果会返回None2、list 的 sort() 方法是原地操作,无返回值,而内置函数 sorted() 方法是返回一个新的 list。二、原创 2021-12-09 21:14:51 · 10341 阅读 · 1 评论