python
文章平均质量分 53
不会代码的小测试
这个作者很懒,什么都没留下…
展开
-
从0开始python学习-48.pytest框架之断言
【代码】从0开始python学习-48.pytest框架之断言。响应进行断言。数据库数据断言原创 2024-01-17 22:16:15 · 1019 阅读 · 1 评论 -
从0开始python学习-54.python中flask创建MD5和base64加密校验的接口
【代码】从0开始python学习-53.python中flask创建MD5和base64加密校验的接口。原创 2024-02-24 14:10:27 · 778 阅读 · 0 评论 -
从0开始python学习-53.python中flask创建简单接口
【代码】从0开始python学习-53.python中flask创建简单接口。原创 2024-02-24 14:10:09 · 855 阅读 · 0 评论 -
从0开始python学习-53.python操作mysql、redis、mongo数据库
【代码】从0开始python学习-53.python操作mysql、redis、mongo数据库。原创 2024-02-20 10:38:37 · 526 阅读 · 1 评论 -
从0开始python学习-52.pytest之基础路径配置
2. 封装路径读取方法-新建封装方法base_url.py。1. 在ini文件中写入路径数据。4. 用例中写入读取。原创 2024-01-25 23:17:17 · 705 阅读 · 0 评论 -
从0开始python学习-52.pytest之ddt数据封装
3. yaml用例中设置和使用数据。1. 判断是否为ddt数据。原创 2024-01-20 19:18:38 · 730 阅读 · 0 评论 -
从0开始python学习-51.pytest之接口加密封装
1. 封装加密方法-2. 写入需要使用加密的接口yaml用例。原创 2024-01-19 23:16:55 · 1362 阅读 · 0 评论 -
从0开始python学习-50.pytest之多接口用例封装
1. yaml用例设计--一个yaml中多个用例,且互相存在关联关系。3. 将读取caseinfo的方法进行list格式的兼容设计。2. 设计多接口用例读取封装。原创 2024-01-19 23:11:42 · 1173 阅读 · 0 评论 -
从0开始python学习-49.pytest之日志封装和allure封装
【代码】从0开始python学习-49.pytest之日志封装和allure封装。原创 2024-01-17 22:27:44 · 1688 阅读 · 0 评论 -
从0开始python学习-47.pytest框架之解决Template替换无法进行二次处理的问题之热加载
在代码运行的过程中动态的调用python中的方法达到获得动态参数。:当参数为动态参数时,Template替换无法进行二次处理。:yaml文件,随机数,替换后的值进行计算,加密等。yaml数据:extract.yaml。:通过热加载来进行替换。原创 2024-01-11 13:18:36 · 737 阅读 · 0 评论 -
从0开始python学习-46.pytest框架之通过yaml处理接口关联问题-针对变量处理
2. use_extract_value()方法为使用提取到的变量进行入参使用,所以是在请求之前执行。1. extract()方法为通过接口的响应提取需要的变量,如token,所以是在请求之后执行。3. 一定要注意用例的执行顺序,不然这里可能就无法正确提取使用。1.2 提取地方:响应的body,响应的cookie,响应头。1.4 示例:在能获取到对应token的yaml用例中写入。2.使用变量:封装一个通用extract_util.py。3. 调用测试用例,使用变量。原创 2024-01-09 12:37:34 · 1733 阅读 · 0 评论 -
从0开始python学习-45.pytest框之将所有的用例封装到一个类中,实现极限封装,并测试用例校验
3.3. setattr(obj,name_str,value): obj对象,name_str为属性名或者方法名,value为属性值或者方法的引用。./test_study/**/*.yaml //表示test_study下的包括子文件夹的所有yaml文件。3.1. 注意如果存在用例先后执行的情况,遵循ASCII进行命名,可以避免用例执行顺序混乱的问题。3.2. *.yaml //表示该路径下所有的yaml文件。2.2. 非必填项给了默认值,所以即使没有也可以。*.* //表示该路径下所有的文件。原创 2024-01-09 12:33:30 · 1391 阅读 · 0 评论 -
从0开始python学习-44.通过yaml实现数据代码分离
1. 在原有读取yaml文件代码基础上,新增一个读取所有用例的方法,注意这里传入的yaml_path不能写死,需要根据不同用例不同的传参。3. yaml文件是无法调用方法的,所有当需要调用token等参数的时候,在用例中调用,此时只需要将yaml中的该字段置位‘’即可。2.2 对应test_phpwind_login用例的yaml文件--test_phpwind_login.yaml。2.3 对应test_file_upload用例的yaml文件--test_file_upload.yaml。原创 2024-01-07 04:55:00 · 521 阅读 · 0 评论 -
从0开始python学习-43.通过yaml实现不同文件之间参数的关联
2. 解决多个py文件中间的中间变量关联的问题。1. 统一管理接口关联的中间变量。原创 2024-01-07 04:48:47 · 763 阅读 · 0 评论 -
从0开始python学习-42.requsts统一请求封装
从这两个代码可以看出,两个py文件都创建了session回话,且在第一个py文件中有params的冗余部分,则可以将请求统一封装到一个session进行调用,去除的冗余的同时,若params内容需要修改也只用修改一个即可,并且将文件上传进行封装后代码中只需要上传文件路径即可。虽然在公共参数中的public_params只作用于一个py文件,但是对于另外一个文件虽然多余了但是不会产生影响。3. 设置统一的公共参数,统一的文件处理,统一的异常处理,统一的日志监控,统一的用例校验等。1.去除重复的冗余的代码。原创 2024-01-06 17:11:02 · 1348 阅读 · 0 评论 -
从0开始python学习-41.requsts中session关联接口
2. 将需要关联的token先access_token = ''后,之后直接将接口中获取到的token通过TestApi.access_token = access_token[0]的方式赋值给到access_token,这样之后的接口需要使用时直接调用即可。作用:requests库的session会话对象可以跨请求保持某些参数,Requests中的Session会话管理的作用就是自动的记录cookie和session的登录状态。采用session的方式进行接口关联。原创 2024-01-06 17:06:48 · 1029 阅读 · 0 评论 -
从0开始python学习-40.通过正则表达式/json进行接口关联
无法提取到的情况,若使用search_value.group(1)则会报错AttributeError,因为并没有提取到任何数据。表示提取第一层级为data,下一级也是data的列表中的第一组数据中的id的value值。使用角标的形式提取,若角标值大于了可匹配到的数据总数,则会出现角标越界的情况IndexError。.group(1) 列出第一个括号匹配的部分,适用于有多个括号的情况。.group(2) 则可以将第二个匹配的部分提取出来。(3) 取列表中的值:$.上级[角标] .key。原创 2024-01-05 03:19:24 · 628 阅读 · 0 评论 -
从0开始python学习-39.requsts库
因为文件上传方式会自动添加请求头:Content-Type: multipart/form-data,所以可以和表单一起同时传递。通过session的方式调用,可以够自动的处理有cookie关联的接口,当有cookie需要关联是建议使用这种请求方式。data会进行编码 : content-type: application/x-www-form-urlencoded。这里请求方式常用的基本上就是get,post,delete,put这几种,其中最常用的就是get和post。(1). json和其他会冲突。原创 2024-01-05 03:11:16 · 1315 阅读 · 0 评论 -
从0开始python学习-38.pytest的parametrize结合yaml实现数据驱动
数据驱动:@pytest.mark.parametrize("参数名","参数值(可以是list或tuple)")注意:这里参数值只能是列表或者元组,由于yaml的特性,最好写成列表,如果写成了字典则无法读取。注意:这里有多个case的情况,每个case下的key值最好一致。定制化title,定制其他的同理即可。2. 定制化allure报告。原创 2024-01-03 16:32:27 · 1199 阅读 · 0 评论 -
从0开始python学习-37.pytest中yaml的读写删除方法
方法二:使用f.truncate()方法清空。直接写入,会清空历史的文件内容。参数化写入,且使用追加的形式。方法一:使用write清空。原创 2024-01-03 00:22:37 · 520 阅读 · 0 评论 -
从0开始python学习-36.pytest中yaml的基本数据结构及锚点引用
4.2 yaml.load_all读取出来是generator格式,需要进行格式转换,可以使用list进行强转后再使用。1.1 字符串三种格式都可以,但是如果有特殊字符【\】时使用双引号的方式不会被转义,其它的都会加一个转义符\。1.2 在yaml中如果需要输入None,则应该写为null,如果写的时None会被认为是字符串None。4.1 当一个yaml文件内有多组数据时,用三个-分隔, 读取时使用yaml.load_all进行读取。注意:强转前后的数据类型必须要能正常转的,比如不能把布尔型转成整型。原创 2024-01-03 00:16:00 · 891 阅读 · 0 评论 -
从0开始python学习-35.allure报告企业定制
3.3 增加一个自己的logo文件并修改D:\study\allure-2.25.0\allure-2.25.0\plugins\custom-logo-plugin\static路径下的styles.css文件里面的样式(最好将需要修改的logo也放在custom-logo-plugin目录下)4. 用例标题:@allure.title("用例1") or allure.dynamic.title('用例2') 两种方法都可以实现。3. 接口名称(分组):@allure.story("测试接口")原创 2023-12-24 22:30:01 · 1160 阅读 · 0 评论 -
从0开始python学习-34.pytest常用插件
文档:https://pytest-order.readthedocs.io/en/latest/安装:pip install pytest-order -Uorder后面的参数为大于等于0的正整数,可以不是顺序排的,只要排序数值之间有顺序就行print('a')print('b')print('c')原创 2023-11-12 22:05:57 · 819 阅读 · 0 评论 -
从0开始python学习-33.夹具@pytest.fixture(scope=““,params=““,autouse=““,ids=““,name=““)
下面就不举例了:module:每个文件共用一个;package:每个包共用一个;session:全局共用一个。表示标记方法的作用域:function(默认),class,module,package,session。表示被@pytest.fixture标记的方法取一个别名,当取了别名后,原来的名称就不能用了。支持列表[]、元组()、字典列表[{},{}],字典元组({},{})当使用params参数化时,给每一个值设置一个变量名。class:每个class 共用一个。function:每个用例都有一个。原创 2023-11-12 22:00:40 · 851 阅读 · 0 评论 -
从0开始python学习-32.pytest.mark()
当strict=False时,如果用例执行失败,结果标记为XFAIL,表示符合预期的失败;如果用例执行成功,结果标记为XPASS,表示不符合预期的成功;当strict=True时,如果用例执行成功,结果将标记为FAILED;如果测试用例执行失败,出现的异常类型在raises里,则不会抛出异常,测试用例标记为XFAIL;如果测试用例执行失败,出现raises之外的异常,则测试用例标记为FAILED,并抛出异常信息。argvalues:参数值,参数组成的列表,列表中有几个元素,就会生成几条用例。原创 2023-11-12 21:47:47 · 426 阅读 · 0 评论 -
从0开始python学习-31.selenium 文本输入框、下拉选择框、文件上传、时间插件选择元素定位
时间插件选择首先需要获取到输入框的xpath:e = driver.find_element(By.XPATH,'//*[@id="start_time"]')根据获取到的XPATH在js中可以调试:$x('//*[@id="start_time"]')[0].value='2023-10-06 10:00:38'然后进行强制写入的方式进行:driver.execute_script('arguments[0].value="2023-10-06 10:00:38"',e)原创 2023-10-07 18:13:34 · 1831 阅读 · 0 评论 -
从0开始python学习-30.selenium frame子页面切换
1.1. 子页面的类型一般分为两种frame标签iframe标签1.2. 子页面里面的元素和主页面的元素是相互独立子页面元素需要进去切换才能操作如果已经进入子页面,那么无法操作主页面元素子页面和主页面以及其他子页面的切换操作一定要有始有终,进去了就要出来,才能操作其他元素1.3. 注意查看需要定位的元素上层页面到底有几个,需要一层一层的切换进入子页面后才能进行操作。原创 2023-10-07 17:28:49 · 2080 阅读 · 0 评论 -
从0开始python学习-29.selenium 通过cookie信息进行登录
1. 手动输入cookie信息保持登录状态url = 'https://test.com/login'driver.get(url)# 手动将cookie信息写入(有多个的情况需要分开写入)--弊端为需要每次都手动输入,很麻烦不适用driver.add_cookie({"name": "SIAM_IMAGE_CODE","value": "985204999473602560"})driver.add_cookie({"name": "LtpaToken","value": "AAECAzY1M原创 2023-10-03 08:01:43 · 987 阅读 · 0 评论 -
从0开始python学习-28.selenium 需要图片验证的登录
# 输入验证码1.截图获取验证码图片driver.find_element(By.XPATH,'//*[@id="login"]/div[2]/div/form[2]/div[4]/div/div/img').screenshot('verify.png')2.将验证码图片发送给解码平台进行处理解码平台:https://www.chaojiying.com/第三方接口地址:http://upload.chaojiying.net/Upload/Processing.phpurl_code =原创 2023-10-03 07:55:59 · 543 阅读 · 0 评论 -
从0开始python学习-27.selenium 简单登录页面脚本
url = 'https://test.com.cn/login'driver.get(url)# 获取登录页面需要输入账号密码进行模拟登录操作user = driver.find_element(By.XPATH,'//*[@id="username"]').send_keys('username')pwd = driver.find_element(By.XPATH,'//*[@id="selfpwd"]').send_keys('123456')button = driver.find_e原创 2023-10-03 07:30:32 · 538 阅读 · 0 评论 -
从0开始python学习-26.selenium 强制等待、显示等待、隐式等待
【代码】从0开始python学习-26.selenium 强制等待、显示等待、隐式等待。原创 2023-10-01 14:05:43 · 463 阅读 · 0 评论 -
从0开始python学习-25.selenium 下拉框、滚动、警告框、设置cookie信息
2. 滚动操作: 通过JavaScript脚本去执行滚动操作。. 首先需要通过Select类创建select对象。. 通过select对象去选中下拉框元素的具体内容。. 首先定义一个滚动的js脚本。. 通过value属性选择。. 通过索引(下标)选择。. 通过文本内容选择。4. 设置cookie信息。原创 2023-10-01 14:01:18 · 555 阅读 · 0 评论 -
从0开始python学习-24.selenium 浏览器常见的操作
1. 浏览器的最大化/最小化:maximize_window () / minimize_window()3. 设置浏览器的位置:set_window_position(0,0) —》左上角为原点。10.获取当前Tab句柄:current_window_handle。11.返回当前浏览器所有窗口的句柄列表:window_handles。2. 设置浏览器的宽高:set_window_size()9. 全屏显示:fullscreen_window()13.选择窗口:switch_to.window()原创 2023-10-01 13:59:13 · 697 阅读 · 0 评论 -
从0开始python学习-23.selenium 常见鼠标的操作
12.在源元素上按住鼠标左键,然后移动到目标偏移并释放鼠标按钮:drag_and_drop_by_offset(源, xoffset , yoffset )10.将鼠标移动到距某个元素多少距离的位置:move_to_element_with_offset(to_element, xoffset, yoffset)9. 鼠标移动到距离当前位置(x,y)的地方:move_by_offset(xoffset, yoffset)8. 鼠标移动到某个元素:move_to_element(element)原创 2023-10-01 13:52:48 · 689 阅读 · 0 评论 -
从0开始python学习-22.selenium 常见键盘的操作
1. 删除键(BackSpace):send_keys(Keys.BACK_SPACE)2. 空格键(Space):send_keys(Keys.SPACE)5. 回车键(Enter):send_keys(Keys.ENTER)3. 制表键(Tab):send_keys(Keys.TAB)4. 回退键(Esc):send_keys(keys.ESCAPE)1. 键盘操作需要通过send_keys()方法来进行输入内容。11.键盘右键:send_keys(Keys.RIGHT)原创 2023-10-01 13:50:57 · 1878 阅读 · 0 评论 -
从0开始python学习-21.selenium 元素的常见操作
10.截图:get_screenshot_as_file() 或 save_screenshot()8. 判断元素是否可见:is_display() 返回True/False。9. 判断元素是否可用:is_enable() 返回True/False。5. 获取元素的大小:size 如果没有文本内容那么是空值。7. 获取元素的属性:get_attribute()2. 点击(鼠标的左击):click()1. 输入内容:send_keys()6. 获取元素的文本信息:text。3. 清除文本:clear()原创 2023-10-01 13:48:01 · 501 阅读 · 0 评论 -
从0开始python学习-20.selenium元素定位8大方法
3. selenium中定位元素的8大方法:id、name、class_name、tagname、xpath、link_text、partial_link_text、css_selector。【百度输入框】2. 多个元素定位find_elements:会返回被定位元素的多个值(以列表的方式存储),如果没有定位,返回一个空列表。原创 2023-10-01 13:44:59 · 366 阅读 · 0 评论 -
从0开始python学习-19.selenium环境搭建和谷歌驱动安装
1. 查看谷歌浏览器的版本号1. 查看谷歌浏览器的版本号2. 下载对应的驱动驱动下载地址:注意:驱动版本号一定要跟浏览器的版本保持一致。原创 2023-09-24 16:03:06 · 470 阅读 · 0 评论 -
从0开始python学习-18.生成器、反射、推导式
1. 定义:生成器是一种能够实现惰性计算、延迟执行和节省内存的迭代器。在Python中,通过yield语句实现生成器2. 生成器可以使用多种方式进行定义,包括通过函数、生成器类以及生成器表达式等3. 生成器中的函数不是直接返回一个值,而是返回一个生成器对象。取值时,通过next()方法或for循环操作获取生成器对象中的值。原创 2023-09-17 23:49:10 · 78 阅读 · 0 评论 -
从0开始python学习-17.装饰器
1. 装饰器的概念:在不修改原来代码的情况下(函数原有的功能)的情况下,为装饰器的对象(原来的函数)增加新的功能或者添加限制条件以及帮助输出2. 装饰器的常用的种类:函数的装饰器、类的装饰器3. 主要的设计模式:开放封闭的原则(对外扩展开发,对内关闭修改)4. 装饰器的定义: 装饰器本身是一个函数;装饰器的返回值是一个函数的引用(函数名字);装饰器只能必须一定是一个形参(形参:用来接收函数的引用(接收函数的名字))5. 核心的使用原则:装饰器是给已有的函数增加额外的功能,本质上是一个闭包函数。原创 2023-09-17 23:29:41 · 76 阅读 · 0 评论