
Python全栈测试开发
文章平均质量分 89
以python语言为基础,完成web自动化、app自动化、
接口自动化等三大方向知识的全面覆盖。
特色:1.案例教学 2.图文并茂 3.剖析自动化常见的面试题 4.软件、框架、项目都引用最新版本
zemuerqi
10年软件测试、开发高级管理专家,涉猎教育、政府、电商、金融等多个领域,并担任软件工程师、高级测试工程师、测试经理等职位
展开
-
3.2.1 Requests中Session对象使用
【小木前言】前面有通过cookie实现接口的免登陆请求操作,那么现在又有新问题了,例如我们之前操作的webtours网站,其登陆需要基于前面一个请求所响应的session的id值而完成登陆操作的,那么如何实现呢?那么就必须引用今天所将的requests包中的Session对象完成了。【小木正文】#-*- coding:utf-8 -*-##----------------------------------------------------------------------...原创 2020-08-18 16:19:42 · 567 阅读 · 0 评论 -
3.1.10 Python中requests模块
requests模块介绍 requests的宗旨是服务于人类,从这个宣传可以知道requests实现HTTP操作的简单性。requests使用的是urllib3,它继承了urllib2的所有特性,所以将connection状态置为keep-alive,多次请求使用一个连接,消耗更小的资源。requests的功能特性: 支持HTTP连接保持和连接池; 支持使用cookie保持会话; 支持文件上传; 支持自动确定响应内容的编码; 支持国际化的URL和...原创 2020-08-18 16:18:30 · 759 阅读 · 1 评论 -
3.1.9 Python中urllib详细应用
前言 前面我们使用过fiddler、postman等工具完成请求的发送,那么在python中如何实现呢?在python中urllib是发送请求最基本的库,且为python的内置库,该库只需要关注请求的链接,参数,提供了强大的解析。在Python2中主要为urllib和urllib2,在Python3中整合成了urllib。而urllib3则是增加了连接池等功能,两者互相都有补充的部分。urllib、urllib2、urllib3用法及区别 Python2.x有这些库名可用: ...原创 2020-08-18 16:16:35 · 225 阅读 · 0 评论 -
3.1.8 Django模型层详细应用
在这里肯定有小伙伴会说,前面不是已经引用了模型层了吗?并且在模型层中完成了数据库的操作了呀,为什么还要讲模型层?首先呢,前面属于我们最传统的处理方式,那种方式过于麻烦,无法很好处理数据。模型层真正应该要应用的是ORM,那么ORM是什么呢?ORM概述 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元...原创 2020-08-18 16:15:08 · 390 阅读 · 0 评论 -
3.1.7 Django实现GET、POST接口实战
需求:完成设计一个登陆的接口,要求返回一个json格式的响应。分析:在视图层完成登陆请求的用户名和密码的数据库数据校验,然后返回对应的json格式结果。结果可能性:第一:用户名重名,这是个bug需要返回一个状态,数据库中存在两个重名的用户第二:用户名不存在,在数据库中查询不到第三:密码错误第四:都正确定义json的格式:"reason": "数据库中存在同名的用户","result": [],"error_code": 2000"reason": "用户名不存在","resu原创 2020-08-11 15:59:39 · 980 阅读 · 0 评论 -
3.1.6 Django框架介绍
前言 由于Python的简洁、易读、强大、高效。现在Python应用在文件处理、网络编程、数据库编程、游戏、Web开发、数据分析、机器学习等各个领域。就Web开发而言,为了提高开发效率,应运而生了很多框架,如flask、django、twisted(底层定义)、tornado(高并发)等。框架很多,根据业务需求、选择适合的框架。整个所有框架中适合初学者完成接口框架的设定的话使用django或者flask。Web框架那么在了解django框架之前,我们先来...原创 2020-08-11 15:58:15 · 1634 阅读 · 0 评论 -
Web自动化邮件发送
前言 最近有小伙伴提醒,说还有邮件服务没有发文章,后面自己检查发现确实自己漏了,所以今天给大家补上。首先web自动化可以自动生成报告,但是在实际工作中,最好能够将报告发送给指定的相关人员,那么省的我们手动进行发送,所以邮件发送也是自动化需要完成的一部分。如果此部分要完成自动化的话,肯定有同学一开始会认为也是通过访问邮箱地址,然后元素定位,最后上传附件报告发送,这种思维肯定可以,但是不稳定且极其复杂,所以我们会通过其内置的服务进行完成。邮件的基础知识1...原创 2020-08-11 15:56:03 · 1343 阅读 · 0 评论 -
3.1.5 使用cookie完成验证码跳过登陆操作
还记得我们之前有总结selenium完成验证码操作的几种方法吗?其中有一种总结记录cookie完成免登陆操作,当时说在接口自动化中进行实现,现在他来了,他来了~~~之前验证码的文章参照:2.2.7 Web自动化验证码处理首先在selenium中如果需要获取一个登陆过程所涉及的cookie信息的话,则有两种方法可以实现。 第一种:自己通过抓包工具实现每个请求的分析,从请求响应数据中得到响应依赖的cookie信息,最后在使用selenium访问url的时候添加相关的coo...原创 2020-08-11 15:48:43 · 635 阅读 · 0 评论 -
3.1.4 cookie、session、token三角关系
前言在接口自动化中,我们经常会涉及cookie、session、token。为什么会有这三个内容呢?他们三者之间又是什么关系呢?那么今天我们彻底来理解搞懂他们~~~故事开始 为了更好的理解三者之间关系,小编设定几个故事来完成,故事角色人物设定:小编,cookie、session、token。cookie的春天cookie:首先我出场,大家知道为什么要存在我呢?小编:为什么要存在?小样,这么简单的问题居然还问我?我们大家都知道http是一个基于应用层的面向对...原创 2020-08-11 15:47:40 · 164 阅读 · 0 评论 -
3.1.3 Fiddler工具详细教程
Fiddler是什么 Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。Fiddler作用---对测试人员而言 1、能够监听http/https的数据包,可以截获从浏览器或者客户端软件向服务器发送的http/https请求;...原创 2020-08-11 15:46:19 · 363 阅读 · 0 评论 -
3.1.2 接口测试类型、分类
自动化发展现状是金字塔的模型 现阶段中最核心的自动化测试将是接口自动化接口概念 前端与后端之间的数据通讯的桥梁;其本质就是数据的输入以及输出的过程;接口的概念从IT的角度出发,主要是子模块或者子系统间交互并相互作用的部分。虽然接口的形式各有不同,但是从测试角度来说,需要测试的内容大致是相同的,功能,性能,安全。接口测试的概念 测试系统间接口的一种测试,测试的对象主要是接口,主要是测试外部系统与所测系统之间以及内部系统之间的交互点。原理:接口...原创 2020-07-27 16:37:32 · 1156 阅读 · 0 评论 -
2.3.6 日志收集
日志模块简介 logging模块定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统。logging模块是Python的一个标准库模块,由标准库模块提供日志记录API的关键好处是所有Python模块都可以使用这个日志记录功能。所以,你的应用日志可以将你自己的日志信息与来自第三方模块的信息整合起来。日志级别 logging模块默认定义了以下几个日志等级,它允许开发人员自定义其他日志级别,但是这是不被推荐的,尤其是在开发供别人使用的库时,因为这会导致日志级别的混乱。...原创 2020-07-27 16:36:08 · 217 阅读 · 0 评论 -
2.3.5 数据驱动模式
数据驱动 数据驱动从数据文件读取输入数据,通过变量的参数化将测试数据传入测试脚本,不同的数据文件对应不同的测试用例,数据和脚本分离。数据来控制测试的业务流。比如你测一个WEB程序,有很多页面,你可以通过一个数据来控制每次是再哪个页面下工作的(即通过数据来导航到相应的页面)。它是关键字驱动的低级版本,他控制的是函数级的,而关键字是控制动作级的。所以数据驱动应该是可以控制整个测试的。Unittest框架参数化 如果一个业务需要通过多组数据进行完成测试的话,那么一个测试类...原创 2020-07-27 16:35:19 · 903 阅读 · 0 评论 -
3.1.1 http数据报文详细剖析
什么是URL 家有门牌号,公交车有线路号,银行账户有账户编号,个人有社会保险号,而 URL 就是因特网资源的标准化名称,URL 指向每一条电子信息,告诉你它们位于何处,以及如何与之进行交互。统一资源标识符(URI)提供了一个简单、可扩展的资源标识方式。URL 是通过描述资源的位置来标识资源的,而 URN 则是通过名字来识别资源的,与它们当前所处位置无关。下图表示他们三者之间的关系:URL组成url语法:<scheme>://<user>:...原创 2020-07-27 16:32:30 · 364 阅读 · 0 评论 -
2.3.4 unittest测试套件及报告生成
前言 虽然前面可以通过参数化的形式减少一个测试类的用例设计,直接通过参数化将数据传入到一个或两个测试用例中即可完成对应业务的相关数据测试。但是问题又来了: 我们知道测试用例的执行顺序是根据测试用例名称顺序执行的,在不改变用例名称的情况下,我们怎么来控制用例执行的顺序呢? 一个测试文件,我们直接执行该文件即可,但如果有多个测试文件,怎么进行组织,总不能一个个文件执行吧? 那么,如果需要解决以上两个问题,必然需要能够自由组织测试用例,组织测试用例必然需要引用到unittest框...原创 2020-07-27 16:29:55 · 236 阅读 · 0 评论 -
2.3.3 PO模式
无模式-V1版本 不使用任何设计模式和单元测试框架。每个文件里编写一个用例,完全的面向过程的编程方式。 存在的问题 一条测试用例对应一个文件,用例较多时不方便管理维护代码高度冗余 示例代码 登录功能-账号或者密码错误from selenium import webdriver # 创建浏览器驱动对象,并完成初始化操作driver = webdriver.Chrome() driver.maximize_window() driver.im...原创 2020-07-27 16:28:17 · 390 阅读 · 0 评论 -
2.3.2 Unittest单元测试框架
前言 基于selenium,使用python语言进行用例的编写。使用unittest组织执行测试用例,可通过Jenkins进行持续集成,定时执行测试用例。通过HTMLTestRunner生成对应自动化测试报告,并通过邮件加附件的方式发送给指定人员。流程:①编写测试用例②执行测试用例③定时执行测试用例Jenkins持续集成④自动发送测试报告Unittest介绍 unittest(一般称为PyUnit)是从Java程序开发中广泛应用的JUnit启发而来的。unittest...原创 2020-07-15 23:07:47 · 235 阅读 · 0 评论 -
2.3.1 自动化测试如何分层
前言 在测试自动化中,测试代码中不仅仅包含测试逻辑,还包含许多其他代码,比如 URL 拼接、html/xml 解析、访问 UI 控件,等等。若把测试逻辑与这些无关代码混在一起,测试逻辑将会很难理解, 也不容易维护。小编于本文介绍如何用分层结构来解决测试自动化中遇到的这些问题。为什么要写框架?从个人方面来说: 逼格高,让别人感觉你好厉害,技术强 面试是加分项,会写框架,可以作为谈资硬性指标 从实际方面来说: 好的测试框架,可以稳定性,健壮性强,可降低代码维护成...原创 2020-07-15 23:06:28 · 1615 阅读 · 1 评论 -
2.2.9 12306火车订票验证码处理
前言 在实现自动化测试时,最为困难的就是验证码处理;那么常规的验证码都进行处理和识别,那么如果是类似12306等图片识别的验证码的话如何实现?那么今天小编就给大家分析下12306验证码如何实现自动化。获取12306验证码图片 按照常规思路无非两种,将截取的验证码图片发送给第三方服务器,然后通过第三方服务器进行识别后将结果进行返回;要么就是自己通过机器识别的方式不断进行学习,写大量的识别库然后完成识别操作;第二种方式耗时耗力,显然不可取,所以大部分都是选择第三方服务器...原创 2020-07-15 23:04:28 · 490 阅读 · 0 评论 -
2.2.8 python中数据加密处理
前言 任何一个收集以及存储客户数据的公司,就算是初创公司,都应该认真对待这个问题。在圈内我们常说,不是系统会不会黑,数据会不会被盗,而是何时被黑被盗的问题。那么此时必然会考虑数据加密处理问题,避免网络上数据被截取、被盗取使用等情况发生。Python数据加密 而我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。在了解python中的Bytest对象之前,首先了解str对象、bytes对象之间的转换关系以及区别: b...原创 2020-07-15 23:02:32 · 468 阅读 · 0 评论 -
2.2.7 Web自动化验证码处理
前言 对于测试人员来说,不管是进行性能测试还是自动化测试其验证码处理都是一个比较棘手的问题;但是对于web 应用来说,大部分的系统在用户登录时都要求用户输入验证码,且验证码的种类众多,例如:纯数字、纯字母、汉字组合、数学运算题、滑动坐标、图片、短信、邮箱、语音等等。验证码的作用 验证码是目前大多网站所支持并使用于注册登录的。就在于其作用能有效防止恶意登录注册,验证码每次都不同,这就可以排除,用其他病毒或者软件自动申请用户及自动登陆,且还可基于网址性能减少用户的并发。实现...原创 2020-07-15 23:00:49 · 950 阅读 · 0 评论 -
Win10下mysql5.5和mysql8.0.20共存
需求:由于之前做的项目用的是mysql5.5,而django最新版本完成接口开发无法与mysql5.5兼容,所以需要升级mysql版本,需要myql5..5和8同时存在运行。前提:电脑已经安装mysql5.5,先关闭mysql5.5的服务下载:mysql官网进行下载,不要下载msi可执行安装文件,下载zip免安装包。下载后进行解压缩放在D盘,并新建一个文件夹mysql8,D:\mysql8\mysql-8.0.20-winx64\bin,其中mysql5.5之前使用可执行文件安装,安装在C盘目录:C原创 2020-07-14 01:48:33 · 1888 阅读 · 0 评论 -
2.2.6 WebDriver API及对象识别技术(二)
概述 在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果不做任何处理的话,代码会由于没有找到元素而报错。这时我们就要用到wait,而在Selenium中,我们可以用到一共三种等待,每一种等待都有自己的优点或缺点,如何选择最优的等待方式。一.强制等待使用方法:sleep(X),等待X秒后,进行下一步操作。 第一种也是使用最简单的一种办法就是强制等待sleep(X),强制让浏览器等待X秒,不管当前操作是否完成,是否可以进行下一步操作,都必须等X秒的时间。 缺...原创 2020-07-11 23:06:40 · 219 阅读 · 0 评论 -
2.2.5 WebDriver API及对象识别技术(一)
切换Frame操作frameset不用切,frame/iframe需要层层切 frame标签有frameset、frame、iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe对selenium定位而言是一样的,selenium有一组方法对frame进行操作。一、怎么切到frame中(switch_to.frame()) selenium提供了switch_to.frame()方法来切换frame switch_to...原创 2020-07-11 23:04:13 · 223 阅读 · 0 评论 -
2.2.4 Selenium操作浏览器机制
浏览器基本操作1.浏览器前进操作: forward() 在初始操作时,是不存在前进操作,一般与back配合使用; back后退操作(当前对象必须存在上下文) 2.浏览器的最大化、最小化、全屏: get_driver.maximize_window() get_driver.minimize_window() get_driver.fullscreen_window() 3.浏览器close和quit两个方法的区别: close表示的是关闭当前对象所原创 2020-07-11 23:02:47 · 227 阅读 · 0 评论 -
2.2.3 Selenium元素定位大全
前言 web自动化中最核心最难的部分就是元素的定位,然而Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准确抓取到对应元素才能进行后续的自动化控制;下面就对各种元素定位的方式进行总结。八种基本元素定位Id定位 这是一种最常用的定位方式,假设已知某个元素的id或通过Firebug查找得到id的相关信息,可通过此方法进行定位,如下图:id属性是html中是唯一的,类似于元素的身份证号码,webdriver提供的id定位方法就是通过元素的...原创 2020-07-08 12:58:23 · 499 阅读 · 0 评论 -
2.2.2 Selenium运行原理
Selenium简介 Selenium是一个开源的web自动化测试框架,主要是基于web UI的自动化测试。现在的版本,逐步增加了对移动端的自动化测试。Selenium支持多种语言进行开发自动化测试脚本,有Java、python、C#、Javascript等等。Selenium支持跨浏览器平台测试。 Selenium 是web自动化测试工具集,包括Selenium IDE、Selenium Grid、Selenium RC等。Selenium发展 从2004年至今,s...原创 2020-07-08 12:56:15 · 239 阅读 · 0 评论 -
2.2.1 Web前端HTML技术与CSS技术
什么是HTML “html”是“Hyper Text Markup Language”的缩写,即“超文本标记语言”,是标准通用标记语言下的一个应用。html并不是一种编程语言,它是一种标记语言,是由一些标签组成,主要是用来制作网页的。HTML 标签HTML 标记标签通常被称为 HTML 标签 (HTML tag)。 HTML 标签是由尖括号包围的关键词,比如 <html> 标签不区分大小写.<html> 和 <HTML>.推...原创 2020-07-08 12:54:14 · 266 阅读 · 0 评论 -
2.1.1 自动化测试理论及流程
什么是自动化 自动化测试就是把以人为驱动的测试行为转化为机器执行的一种过程。通常情况下,测试人员根据项目组的要求或者根据需求规格说明书在设计了测试用例并通过评审之后,由自动化测试人员尽可能的模拟测试用例中描述的规程一步步编写自动化测试脚本,然后根据得到实际结果与期望结果进行比较。得到测试最后的结果的这么一个过程。称为自动化测试。常见的自动化测试工具有:QTP、Appium、Selenium、AutoRunner、SilkTest等等 测试必要条件 实施自动化测试之前需...原创 2020-07-08 12:49:39 · 1300 阅读 · 0 评论 -
1.3.9 python中进程与线程
多任务原理 单核CPU实现多任务原理:轮流让各个任务交替执行,CPU调度数据快,导致我们感觉所有任务同时执行。 多核CPU实现多任务原理:多任务在多核CPU上实现,由于任务数量远远多于CPU核心数量,所以操作系统自动把很多任务轮流调度每个核心上执行。 CPU个数即CPU芯片个数 CPU的核心数是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU核心单元组。 并发:任务数多于cpu核心数并...原创 2020-07-04 17:38:12 · 269 阅读 · 0 评论 -
1.3.8 python操作Oracle数据库
前言 对于数据的管理和分析来说,数据库还是专业一些。如果Python能和数据库结合在一起,那么就能结合两种的优势,提高效率。如果工作中使用的是Oracle数据库,那么python可以通过第三方模块cx_Oracle可以与Oracle相连。安装cx_Oracle Python一个官方网站PyPI,上面有丰富的模块。cx_Oracle就可以在PyPI中下载。打开PyPI的网址https://pypi.python.org/pypi,在里面搜索cx_Oracle,即可找到该模块...原创 2020-07-04 17:35:07 · 287 阅读 · 0 评论 -
1.3.7 python操作Mysql数据库
PyMySql介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个第三方库,Python2中则使用mysqldb。PyMySql安装可以通过pip直接安装也可以通过pycharm的settings中进行安装;pip install pymysqlPyMySql处理数据库增删改查说明:以下代码都是python3.8版本,表结构是id、name、age,其中id设置为自动增长增#-*- coding:utf-8 -*-##-----...原创 2020-07-04 17:33:47 · 189 阅读 · 0 评论 -
1.3.6 python解析xml文件数据
XML简介 XML 指可扩展标记语言(EXtensible Markup Language)。 XML 是一种很像HTML的标记语言。 XML 的设计宗旨是传输数据,而不是显示数据。 XML 标签没有被预定义。您需要自行定义标签。 XML 被设计为具有自我描述性。 XML 是 W3C 的推荐标准。 XML用途 XML把数据从HTML分离 XML简化数据共享 XML简化数据传输 XML简化平台变更 .原创 2020-07-02 15:43:02 · 342 阅读 · 0 评论 -
1.3.5 python解析ini文件数据
ini介绍 .ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理界面就可实现相同的配置了。但在某些情况,还是要直接编辑ini才方便,一般只有很熟悉windows才能去直接编辑。ini结构 在python读取ini文件之前,我们首先来了解下init文件的结构;一个ini文件主要是由多个section组成,每个section中又...原创 2020-07-02 15:41:54 · 668 阅读 · 0 评论 -
1.3.4 python解析json文件数据
Json介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是JavaScript的子集,易于人阅读和编写。 json是一种通用的数据类型 一般情况下接口返回的数据类型都是json 长得像字典,形式也是{key:value} 其实json是字符串 字符串不能用key、value来取值,所以要先转换为字典才可以 前端和后端进行数据交互,其实就是JS和Python进行数据交互jso...原创 2020-07-02 15:39:57 · 591 阅读 · 0 评论 -
1.3.3 python解析yaml格式文件
YAML介绍 YAML是一种比XML和JSON更轻的文件格式,也更简单更强大,它可以通过缩进来表示结构,是不是与Python使用有异曲同工之处; YAML的可读性好。 YAML和脚本语言的交互性好。 YAML使用实现语言的数据类型。 其官网描述:YAML语言的设计目标,就是方便人类读写。YAML文件规则 区分大小写; 使用缩进表示层级关系; 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元素...原创 2020-07-02 15:37:55 · 513 阅读 · 0 评论 -
1.3.1 python解析excel格式文件
Excel表格 Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。excel文档的基本定义 工作薄(workbook) 工作表(sheet) 活动表(active sheet) 行(row): 1,2,3,4,5,6…….. 列(column): A,B,C,D…….. 单元格(cell): B1, C1 excel文件格式...原创 2020-07-02 15:35:04 · 535 阅读 · 0 评论 -
1.3.2 python解析csv格式文件
前言假设有一个文本文件,该文件的内容如下格式:name:woodpassword:wood123456sex:maleage:10此时需要读取该数据,则可以直接使用open函数完成文本内容的读取操作;但是读取的数据是个完整的字符串,如果需要通过键名调用对应的键值的话则需要做一系列的处理;其处理方式可以如下:#-*- coding:utf-8 -*-##---------------------------------------------------...原创 2020-06-29 11:22:00 · 276 阅读 · 0 评论 -
1.2.12 python内置模块--time、datetime
时间戳 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。 注意:目前Python 3.6中支持的最大的时间戳为32535244799(3001-01-01 15:59:59) Python的time 块下有很多函数可以转换常见日期格式。如函数time.time()用于获取当前时间戳。例如: >>>import time>>>time.time()s.原创 2020-06-29 11:16:48 · 5316 阅读 · 0 评论 -
1.2.11 python内置模块--sys模块
sys-系统特定的参数和功能 该模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数。它始终可用。 sys.argv 传递给Python脚本的命令行参数列表。argv[0]是脚本名称(依赖于操作系统,无论这是否是完整路径名)。如果使用-c解释器的命令行选项执行命令,argv[0]则将其设置为字符串’-c’。如果没有脚本名称传递给Python解释器,argv[0]则为空字符串。 示例:sys.py #!/usr/bin/env pythonimport s.原创 2020-06-29 11:15:13 · 302 阅读 · 0 评论