LSQ的测试日记
这个作者很懒,什么都没留下…
展开
-
WEB UI自动化测试框架搭建(七)_ddt,邮件发送测试报告
一.发送邮件功能在公共方法包Utils下新建个SendMails.py文件原创 2021-04-30 19:23:08 · 507 阅读 · 4 评论 -
WEB UI自动化测试框架搭建(二)_PO模式三层框架
书接上文:原创 2021-04-19 08:56:01 · 3013 阅读 · 5 评论 -
混合驱动测试框架(二)_eval执行函数表达式
上一篇已经把添加联系人的测试用例写好了。原创 2021-05-12 21:34:33 · 223 阅读 · 0 评论 -
接口自动化测试(四)_完善框架目录
一.接口自动化框架的目录前三篇只是在学习搭建接口自动化测试框架的基础库request和pytest,现在开始正式搭建接口自动化测试框架。首先以之前搭建过的关键字驱动的UI自动化测试化框架为例,里面有公用方法文件夹,测试数据,测试用例,日志,测试报告等等:新建一个项目,并在项目内新建这些文件夹,整个接口自动化测试框架的雏形就搭建好了,接下来要做的就是完善这个框架,填充这些文件夹的内容了。Tips:接口请求中,向接口发送的数据有些是可以随便填的,但有些数据一定是从其他接口那里获得的,比如sessio原创 2021-07-21 19:37:02 · 833 阅读 · 1 评论 -
混合驱动测试框架(一)_读取并操作excel
之前的前七篇写了数字驱动框架,然后又写了两篇关键字驱动框架数字驱动框架:侧重于单个接口或者单个功能的测试,重复自动化输入多组数据关键字驱动框架:侧重于自动化一套完整的流程关键字驱动框架的篇幅比较少,因为其中的大多数只是在数字驱动框架里都已经用过了。在这边大概还是用两篇的篇幅讲一下混合驱动框架,就是中间有直接走流程的部分,也有多组数据测试一个功能或接口。一.还是先加一些基本的功能,如Utils,ConfigFiles等通用功能(三个框架都要用到)...原创 2021-05-12 13:36:51 · 415 阅读 · 1 评论 -
关键字驱动测试框架(二)_执行excel
关键字函数封装好了接下来就是写测试脚本了。一.测试脚本在TestCases包下面创建文件,然后还是老样子,要获取excel表格里的数据,因此我们在文件里创建一个操作excel的对象先读取excel里第一个sheet,也就是测试用例,如果里面的每一行的是否执行为y,那就根据这一行里sheet名数据去读取对应的sheet到这一步为止的代码如下:读取到login这个sheet之后,接下来就是根据该sheet里的内容来写测试步骤了。相应的代码在前一个项目WEB UI里面已经写过一次了。继续写,获取原创 2021-05-09 10:23:02 · 426 阅读 · 1 评论 -
WEB UI自动化测试框架搭建(五)_断言,log日志模块
上篇文章实现了数据驱动,接下来对使用数据之后的结果进行判定(先不使用unittest等框架,纯手写)一.手动断言加上如下这段代码就是一个简单的断言了。根据except_result来判断将要进行的判定:如果是登录成功,就判断页面内id为spnUid的元素值是否为用户名如果是登录失败,判定下图所取元素的值是否为账号或密码错误。亲测这边使用id定位会报错,所以我用的是xpath来定位。判定成功后在字典的最后一位写入结果,不过这里仅仅是写入字典而已,我们应该写入excel。在ExcelOp原创 2021-04-28 21:48:39 · 1486 阅读 · 1 评论 -
接口自动化测试(五)_多接口关联测试
一.完善测试用例1.新建一个assert公用方法在Util包下面新建一个方法AssertUtil,这个公用方法的作用是对被测试接口的返回response进行断言需要向其中传递两个参数,一个是由requests请求获取到的response对象另一个参数是excel中写入的期望表达式...原创 2021-07-25 13:01:49 · 2891 阅读 · 1 评论 -
关键字驱动测试框架(一)_根据关键字创建函数
之前的七篇都是数据驱动的WEB UI自动化测试框架,现在学习并记录一下关键字驱动的测试框架。这两者在实现技术上可能没有太本质的区别,都是以selenium为核心,但在实现逻辑和思想上可能有较大的区别。一.关键字驱动框架介绍关键字驱动框架:步骤:一个用例需要进行n步的操作步骤才能完成,而每个操作步骤都有可能用到以下三个关键字对象:操作的页面或元素,如用户名输入框动作:对对象进行的动作,如点击登录按钮,输入文字数据:对象操作所用到的值,如用户名密码等以登录163邮箱为例,操作步骤如下:1.打原创 2021-05-05 19:22:01 · 629 阅读 · 5 评论 -
WEB UI自动化测试框架搭建(四)_数据驱动
上一篇实现了将读取页面内元素所需的type和type名存入ini文件中,并读取,然后操作页面成功。但是登录时填入的用户名和用户密码还是手动输入的。这样不好。我们写一个excel文件,用户名,密码等都从中读取。一.数据驱动比如在测试登录时,除了正确的用户名和密码,我们还可能输入错误的密码,密码为空等多种情况。和正确的一组用户名密码相比,仅仅是输入的数据不一样,我们不可能因为有n种的输入组合就将代码重复n遍。这就是数据驱动的作用,将数据与代码分离。登录行为的代码独立,需要用到不同组合的用户民密码到原创 2021-04-27 21:29:54 · 622 阅读 · 2 评论 -
WEB UI自动化测试框架搭建(一)_公用方法Utils
首先,WEB UI自动化框架的搭建以selenium为基础,需要了解一些基本用法:https://blog.csdn.net/qq_38175040/category_10942237.html前言我们以如下一段代码为例,刚刚初学完selenium的人差不多都是这样写的吧:from selenium import webdriverimport timedriver = webdriver.Chrome()driver.get('https://mail.163.com/')i_frame =原创 2021-04-14 20:22:52 · 3627 阅读 · 3 评论 -
接口自动化测试(二)_pytest执行用例命令,控制台参数,用例id,fixture方法
一.pytest库安装好pytest使用pytest执行函数测试用例先写一个小demo,尝试一下pytest(注意.py文件命名必须以test_ 开头,其中的测试用例函数的命名以test开头)test_demo_01.py的代码:def func(x): x = x+1 return xdef test_a(): assert func(5) == 6def aa(): assert func(2) == 1def test_func():原创 2021-07-06 21:06:58 · 529 阅读 · 1 评论 -
接口自动化测试(一)_HTTP基础,requests库
首先需要了解HTTP的基础知识。我之前也做过相关的功课,写过关于HTTP协议的几篇博客:https://blog.csdn.net/qq_38175040/category_10218858.html原创 2021-07-01 20:34:46 · 341 阅读 · 1 评论 -
WEB UI自动化测试框架搭建(六)_unittest框架组织测试用例,生成测试报告
一.unittest框架基本概念:testcase 测试用例,以test开头,执行顺序会按照方法名的ASCII码值来排序test fixture 测试固件test suite 测试套件,testloader把需要一起执行的测试用例加载到套件中,然后一起执行test runner 执行测试用例并返回测试结果常见断言:assertEqual(a,b,msg=None) 判断a和b是否相等 assertNotEqualassert原创 2021-04-29 22:05:40 · 981 阅读 · 1 评论 -
接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序
一.原创 2021-07-15 20:56:00 · 554 阅读 · 2 评论 -
WEB UI自动化测试框架搭建(三)_记录项目内各文件path的Config模块
之前的文章中以登录为例:WEB UI自动化测试框架搭建(二)其中的用户名和密码都是手动输入的,但在现实操作过程中可能不是这样,诸如用户名和密码我们可能是从文件中读取的而非手动输入的。一.ConfigFiles模块还是在My_WEB_UI项目下新建一个ConfigFiles模块,然后在模块下创建一个elementLocation.ini文件。ini文件下有若干个节,每个节下面有若干个键值对,;后是注释[section] ----------节my_na原创 2021-04-20 10:19:40 · 836 阅读 · 1 评论 -
自动化框架错误排查:本地全通过,pipline上大部分报错
最后拿报错处给出的键和redis里实际的比较,发现是开发重构代码把键给改了,觉得测功能不需要知道这个,就没有通知我们。我在堡垒机上使用命令行来跑case,发现与pipline上一致,并定位到了错误处。最近经过一次切环境和验证码部分的代码重构,果不其然,我们的自动化框架就出错了。这一步要求修改redis里的值,执行成功,说明连接redis没有问题。这么多case报错,而且报错log都一模一样,推断是底层出错。pipline上无法拿到返回的验证码,拿到的是null。拿着这个null去做后续的传参,自然会报错。原创 2023-12-04 17:08:37 · 510 阅读 · 0 评论 -
踩坑:自动化中login和logout尽量不要在1s内发生
这样,旧token的办法时间明显小于被更新后的时间,这个旧token被判定失效。login时token给定了一个颁发时间,logout在同一秒内发生,去redis里更新了一下时间,与旧token的颁发时间在同一秒内,所以判定旧token 仍旧有效。原本的技术架构是:有效的token会放在redis里,无效的,被logout注销或者被refresh刷新的这些token会被放在黑名单里,同样也在redis里。按理来说,使用这个token调用logout之后,这个token随后应该是失效的,但实际上并没有。原创 2023-07-18 09:51:32 · 227 阅读 · 0 评论