- 博客(50)
- 收藏
- 关注
原创 Python自动化测试---Appium
获取界面名:adb shell dumpsys window windows | grep mFocusedApp获取包名+界面名:adb shell dumpsys activity activities查看已连接系统:adb devices连接模拟器:adb connect IP:端口号。
2024-11-12 23:07:54
1018
1
原创 SQL基础语句
学生表 student,包含以下字段:id(学号)、name(姓名)、class_id(班级编号)、exam_num(考试次数)、score(成绩)。学生表 student,包含以下字段:id(学号)、name(姓名)、class_id(班级编号)、score(成绩)。查询学生表中的班级编号(class_id)和每个班级的平均成绩(avg_score)汇总数据表中学生的总成绩(total_score)、平均成绩(avg_score)、最高成绩(max_score)、最低成绩(min_score)
2024-10-16 17:00:31
611
原创 一、接口自动化测试框架
装饰器:@pytest.fixture(scope=“”,params=“”,autouse=“”,ids=“”,name=“”)使用requirements.txt文件保存,并运行pip install -r requirements.txt。手动调用方式: @pytest.mark.usefixtures(exe_assert)true(自动调用) false(手动调用,需要传入固件名称)1.模块名(py文件)必须以test_开头或_test结尾。**function(函数,用例,默认)
2023-08-13 19:27:33
205
原创 剑指Offer题解:数组中重复的数字
数组中重复的数字描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1数据范围:0<=n <=1000实例:[2,3,1,0,2,5,3]返回值:2题解:先对数组进行排序,排序后使用for依次进行大小对比,若遇到重复的数字直接输出。def du
2021-11-16 19:34:31
153
原创 自我学习39:接口自动化测试用例&功能测试用例区别
标题接口文档三要素接口概述(接口实现功能、URL地址、GET/POST、接口使用场景描述)接口入参 (Params/Body 、Hearders)接口出参(Json或CSS或其他格式)标题接口用例设计设计用例思路与功能测试一样接口测试注重的是测后端接口,功能测试注重测前端页面输入参数测试(合法参数、不合法参数、参数为空、参数为null、参数超长)功能测试(接口是否满足所提供的功能,正确流程)异常场景(失败后是否可以重新下发任务)接口测试与功能测试区别可进行并发测试,例如抽奖
2021-06-29 23:26:21
1310
2
原创 自我学习38:如何区分前后端BUG
一. 定位问题界面问题:图标错误、文字错误、样式错误等功能问题:数据库错误、服务端错误、客户端错误数据库问题:服务端接口传值问题、sql建表问题,例如缺少某个字段,或者字段值为空服务端问题:哪个接口出的问题,或者什么业务逻辑处理的不对,从而导致数据库哪里不对或导致返回给前端的数据不对客户端问题:什么业务逻辑处理的不对或具体哪个字段对接有问题,例如与接口对接时字段取值错误,与服务端定义的需要前端自己处理逻辑的业务处理出错等二. 如何分析BUG数据库层面:缺少某个字段,或者字段值为空等等
2021-06-29 22:59:54
381
原创 自我学习37:请描述一下网页从开始请求到最后展示的完整过程
一个网页从开始请求到最终展示过程:在客户端浏览器中输入URL发送到DNS(域名浏览器)获得域名对应的WEB服务器的IP地址客户端与WEB服务器建立TCP(传输控制协议)连接客户端向对应的IP地址的WEB服务器发送相应的HTTP或HTTPS请求WEB服务器响应请求,返回指定的URL数据或错误信息客户端下载数据,解析HTML源文件,解析完成后,在浏览器中显示基础的页面分析页面中的超链接,显示在当前页面。对网址URL进行DNS解析TCP三次握手建立连接一次握手: 浏览器向服务器发送自
2021-06-23 20:43:02
157
原创 自我学习36:TCP三次握手和四次挥手
TCP三次握手第一次握手????:建立连接时,客户端发送syn(同步序列编号)包到服务器,并进入SYN_SENT状态,等待服务器确认。第二次握手????:服务器收到syn包,必须确认客户端的SYN,同时自己也发送一个SYN包,即SYN+ACK,服务器进入SYN_RECV状态。第三次握手????:客户端收到服务器的SYN+ACK包,向服务端发送确认包ACK,发送完毕后客户端和服务器进入TCP连接成功状态,完成握手。TCP四次挥手第一次挥手????:客户端发送一个FIN段,并包含一个接
2021-06-21 22:38:53
130
原创 自我学习35:Log日志分析
什么是日志?当App在移动设备上发生BUG或者崩溃闪退后,操作系统会生成一个Log日志,保存在设备中。如何拿到日志?IOS系统会保存在电脑中,根据电脑操作的不同,日志保存在以下位置:Mac OS X:~/Library/Logs/CrashReporter/MobileDevice/Windows XP: C:Documents and SettingsApplication DataApple ComputerLogsCrashReporterMobileDevice<DEV
2021-06-10 00:12:23
739
3
原创 Python学习34:自我复习:Pytest和Unitest
Python主流框架- Unittestunittest是Python标准库中自带的一款单元测试框架,支持自动化测试,测试用例的初始化和关闭,测试用例的聚合等功能Unitest特性:通过class方式,将测试用例组织在一起Unitest不需要单独下载,可直接在Python内直接使用实例:import unittestclass Testunittest(unittest.TestCase): def test_testcase(self): self.assertEqual("ab
2021-06-09 23:45:50
214
原创 Python学习33 :解题方法----双指针法
双指针双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务,一个指针从前往后,另一个指针从后往前。题目举例有序数组sum题目描述:在数组中找出两个数,使他们的和为target输入:num = {1 , 3 , 6 , 9 } , target = 7输出:[1 , 3]方法:使用双指针,一个指针指向值较小的元素,一个指针指向值较大的元素。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历如果sum>target ,移动较大的元素,使sum变小一些如果
2021-05-27 19:23:17
549
1
原创 学习32 :Web自动化·js发送和文件上传
JS发送写js代码时,建议现在网友F12控制台中先进行编写,然后在复制到python中,以防出现错误实例1:driver.get("https://www.12306.cn/index/")#使用强制等待time.sleep(1)#发送js code给浏览器js_code = """e = document.getElementById("train_date") e.readOnly = false; e.value = "2020-07-20" """driver.excute
2021-05-07 16:19:21
501
原创 学习31 :Web自动化·页面基本操作
鼠标操作点击e.click() 通常用这个ActionChains(driver).click(e)双击ac = ActionChains(driver)ac.double_click(e).perform()拖拽ac = ActionChains(driver)ac.drag_and_drop(e1,e2).perform()悬停#步骤1:移动到需要悬停的位置上(这里拿百度首页右上角的设置来演习)setting = driver.find_element_by_id('s-
2021-05-04 21:14:32
365
原创 学习30 :Web自动化·元素等待和切换
元素等待的三种方式强制等待time.sleep()隐性等待driver.implicitly_wait()全局设置超过超时时间会报错只能用来等待元素显性等待 (难点、重点)#第一步:设置定时起wait = WebDriverWait(driver,20,poll_frequency=0.5)`#第二步:设置满足的条件1. 等待某个元素可以被点击2. 等待某个窗口被打开3. 等待某个元素可见4. 显性等待不是全局设置...
2021-05-04 19:47:37
180
原创 学习29 :Web元素定位学习·第二篇
xpathxpath总结:标准xpath表达式//input[@class=’’ and text()=‘文本’]//div/input[@class=’’ and text()=‘文本’] 父元素定位子元素//*[] ----- * 任意标签名//input[@*=‘kw’] ----- * 任意属性//input[@id]//input[contains(@class,‘value’)]//input//… 通过子元素查找父元素轴运算
2021-05-03 19:54:27
150
原创 学习28 :Web元素定位学习·第一篇
find_element 和 find_elements 区别find_element 是定位一个元素对象,find_elements是定位多个元素对象find_element 得到的是一个WebElement对象,find_elements得到的是列表如果找不到元素时,find_element报错NoSuch Element Exception,而find_elements得到是一个空列表八大元素定位方式使用网页中F12按键,定位到元素属性获取属性:e.get_attribute(“id
2021-05-03 18:53:27
333
原创 学习27 :HTML学习
段落段落<p>fruit</p>换行<p> fruit<br> fruit<br> fruit<br></p>水平线<hr>排版优化<div>banana</div><div>banana</div><div>banana</div><div>banana</div>
2021-04-29 22:12:51
126
原创 学习26 :正则表达式
正则表达式语法- 表示单字符单字符:即表示一个单独的字符,比如匹配数字用\d,匹配非数字使用\D,具体规则如下:字 符功能.匹配任意1个字符(除\n)[7a]匹配[] 中列举的字符,这里就是匹配7或者a这两个字符中的其中一个\d匹配数字,即0-9\D匹配非数字\s匹配空白,即空格 tab健\S匹配非空白\w匹配单词字符,即a-z、A-Z、0-9、_\W匹配非单词字符- 表示数量如果要匹配某个字符多次,就可以在字
2021-04-27 14:53:11
111
原创 Python学习25 :框架模型分析
框架模型分析用例数据、测试用例、测试报告、日志、配置文件公共的方法:表格数据读取,日志模块,配置文件读取的模块测试运行启动程序 ,测试套件分层设计公共的方法目录:common测试用例类模块目录:testcases测试数据目录:data测试报告存放目录:reports存放一些下载第三方的模块:library配置文件存放目录:conf日志文件存放的目录:logs项目的启动文件:run_test.py...
2021-04-08 00:33:32
110
原创 关于HTTP协议和请求方式的解读
接口硬件接口:指的是两个硬件设备之前的连接方式(比如:鼠标和电脑通过USB接口进行连接)软件接口:简单来说就是软件程序之前数据交互的通道软件接口分类:程序内部接口:是客户端与服务器的接口,用来实现客户端和服务器间的数据传输外部接口:外部接口常见的典型例子就是通过第三方登录/第三方支付等,通过调用第三方接口并返回当前的系统常见的接口协议:webService接口:使用soap协议通过http传输,请求报文和返回报文都是xml格式,用的测试工具有:soapUIhttp协议接口:目前使用
2021-04-08 00:31:38
815
原创 Python学习24 :配置文件的使用
一、什么是配置文件?配置文件指的是在一个项目当中,对一个文件进行配置(设置)的一些数据。这些数据在项目的运行过程中一般不会变化对于不同的项目,不同的环境可能需要变化配置文件后缀:ini 、conf 、 cfg 、 yaml配置文件示例#配置文件示例[mysql]default-character-set=utf8[mysqld]port = 3306basedir = c:\mysql-5.7.25-winx64\mysql-5.7.25-winx64datadir = c:\m
2021-03-15 20:34:57
563
原创 Python学习23 :Logging封装
logging封装#coding:utf-8import loggingdef get_logger(name=None, logger_level="DEBUG", stream_level="DEBUG", fmt='%(asctime)s - [%(filename)s -->line:%(lineno)d] - %(levelname)s:%(message)s',
2021-03-15 15:45:41
129
原创 Python学习22 :Logging日志管理
一.日志模块级别级别说明DEBUG输出详细的运行情况,主要用于调试INFO确认一切按预期运行,一般用于输出重要运行情况ERROR发生了错误,软件没能执行一些功能,还可以继续执行WARNING一些意想不到的事情发生了(例如:“警告:内存空间不足”),但是这个软件还能按预期工作,在不久的将来会出现问题CRITICAL一个严重的错误,表明程序本身可能无法继续运行这5个等级,也分别对应5种打日志的方法:debug、info、warning、error、c
2021-03-14 14:42:00
187
1
原创 Python学习21 :Excel基本操作和封装
安装Excel库pip install openpyxlopenpyxl专门处理excel 表格的。 只支持 xlsx 格式#导入openpyxl#coding=utf-8#导入openpyxlfrom pprint import pprintimport openpyxlfrom openpyxl.worksheet.worksheet import Worksheet#打开excel表单workbook = openpyxl.load_workbook("cases.xlsx
2021-03-03 15:45:58
257
1
原创 Python学习20 :类和对象和unittes测试框架
什么是单元测试?指对软件中的最小可测试单元进行检查和验证单元:函数或者类单元测试:测试类或者函数为什么要做单元测试?便于后期重构优化设计文档记录具有回归性投入小,收益大,能够精准的更早的发现问题单元测试和测试人员有什么关系?python 很难测试 java 的单元关键是单元测试一般是开发或者测试开发做的测试有哪些?集成测试**在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试系统测试系统测试,英文是Syst
2021-02-28 16:18:17
234
1
原创 Python学习19:python类的继承
继承父类 子类继承如何表示?class 子类名(父类名): pass子类可以实现自己独有的方法 ==>重写super() 超继承:使用父类当中的方法、实例1:class Man: name = "man" def __init__(self): self.name = " "print(Man.name)print(Man("csdn").name)实例2:class Yifu: def __init__(self,brand,model
2021-02-21 22:41:57
167
原创 Python学习18:python关于路径_类和对象的小作业分享
作业1建立一个demo.py文件获取该demo.py的绝对路径在同一目录下建立data文件夹在data文件夹下创建cases.txt文件作业1:#创建demo.py文件with open ("demo.py","w") as f: pass #获取该demo.py的绝对路径import os#获取当前文件的路径current_path = os.path.abspath(__file__)#获取目录的路径dir_path = os.path.dirname( curr
2021-02-11 14:22:50
362
1
原创 Python学习17:自我复习:类和对象_方法_初始化和self
类和对象类属性和实例属性:类属性:所有的成员都是一样的,可后天学习实例属性:不是每个人员都一样类属性和实例属性的区别:类属性:类只能获取类属性实例属性:可以获取 实例属性和类属性实例1:class Student(object): school = "usc" #类属性 def __init__(self): self.name = "csdn" #实例属性 self.age = 24 #实例属性new_stu =
2021-02-08 16:46:34
294
1
原创 Python学习15:os.path路径操作详细解析
路径操作os.pathos.path 模块主要用于获取文件的属性,也可以说是主要处理系统路径相关的操作绝对路径:从系统的盘符或者是系统根目录开始相对路径:一个路径相对于另一个路径的说法用的最多的是os.path.abspath获取绝对路径,因为绝对路径不会变主要的方法说明:实例使用:import os.path#返回文件名print(os.path.basename(__file)) ===>打印结果:main.py#获取目录路径,返回上一级
2021-01-31 01:22:47
4302
原创 Python学习14:__name__和模块导入详解
__name__使用定义:首先需要了解 name 是属于 python 中的内置类属性,就是它会天生就存在于一个 python 程序中,代表对应程序名称。表示当前文件的模块名通过模块导入形式运行的, name 就是文件名、模块名称直接运行的文件,脚本, name 就不是文件名,模块名称,是固定的:main__name__怎么用?实例1:__name__print("work_02",__name__) ===>打印结果:work_02 __main__
2021-01-29 18:13:03
625
原创 Python学习13:try_except_异常处理使用
异常处理python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误-python异常名称:异常名称描述BaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt用户中断执行(通常是输入^C)Exception常规错误的基类StopIteration迭代器没有更多的值GeneratorExit生成器(generator)发生异常来通知退出StandardError
2021-01-27 17:29:35
926
原创 Python学习12:自我复习:python字典/列表/字符串之间的转换
**1.列表与字符串的转换join方式列表转换字符串:list = ['csnd','so','good']new_str = " ".join(list)print (new_str) ===>打印结果:csdn so good将列表中的值转换成字符串:list = ['csnd',1,'good']new_list = [str(i) for i in list]print new_list ===>打印结果: ['csnd', '1', 'goo
2021-01-25 18:49:06
144
原创 Python学习11:open的介绍和使用
Openpython open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写注意⚠️:使用 open() 函数一定要保证关闭文件对象,即调用 close() 函数基本语法:open(file,mode='r',encoding=None)-参数说明:file: 必需,文件路径(相对或者绝对路径)mode:可选,打开模式,读写模式encoding:一般使用utf8-mode参数参照图:实例:实例1:#打开text.txt文件,读取打印出
2021-01-24 14:55:21
874
原创 Python学习10:函数2:位置参数_可变长参数_函数的相互调用_函数的作用域
关键字参数"""关键字参数。作用:还是相对于位置参数讲的。可以提高函数调用时候的可读性,更加容易理解实际参数的意义。关键字的名字==> 形式参数关键字参数区别位置参数: 可以不按照顺序进行调用,可以交换顺序。TODO: 关键字参数也要放到位置参数的后面。函数:一定要掌握的知识:return函数的形式参数函数的实际参数函数的位置参数默认参数:简化调用过程关键字参数:可以交换参数的顺序,并且提高可读性"""def get_name(firstname, midd
2021-01-21 16:25:38
188
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人