unittest框架介绍

unittest框架是python中一个标准的库中的一个模块,该模块包括许多的类如 test case类、test suit类、texttest runner类、texttest result类、test loader类test case类的话一个test case 就是一个测试用例,一个测试用例包含一个完成的流程,包括setup()表示初始化用例,run()表示运行,teardown表示还原测试场景。Test suit类在自动化中往往一个场景需要编写一个或者多个测试用例,那么就需要把这些多个用例一起执行,这时候需要把用例收集起来,就可以通过testsuite来处理,可以把testsulte当成一个用例容器,而在testsuite中就有一个addtest方法可以将用例添加到这个容器里面形成一个套件。Texttextrunner类该类是用来执行用例的,其中包含一个run()方法,该方法不但可以运行单个用例,也可以运行testsuite中的多个用例,并将执行结果保存到texttestresult里。Testloader类,该类帮我们搜索所有test开头的测试用例并将搜索到的方法用testsuite收集起来所以使用unittest框架编写测试用例的时候用例命名需要用test打头。Unittest框架结构分为三部分,首先是setup部分用于设计初始化环境的,该类中方法执行的时候都会先执行setup中的代码。运行部分:这里是编写测试用例的地方所有的用例命名都需要用test开头最后是teatdown部分:这里是用例执行完后还原测试环境的。

自动化实现流程

我说下电商下单自动化测试流程吧,因为是基于unittest框架进行编写所以需要用import unittest导入unittest模块还需要导入webdriver模块因为需要用webdriver方法去调用谷歌浏览器的驱动来打开浏览器,然后先定义一个类在参数中输入unittest.testcase用来继承unittest.testcase中的类,然后定义setup方法在setup中先将webdriver.Chrome赋值给self.变量chrome是我用的谷歌浏览器的驱动,并用login.dl(self.变量)来调用之前封装好的登录功能,然后再定义一个test打头的函数这里主要用于编写实际测试用例,然后在test函数中将slef.变量再次进行赋值给一个变量方便于操作。接下来进行定位搜索栏,输入商品名称,点击搜索按钮,用F12获取xpath值然后用find_element_By_xpath对搜索栏进行定位并赋值给一个变量这里这里说下为啥用xpath进行定位,因为有时候id 和name 等属性值不是唯一的或者没有,所以直接使用xpath进行定位会比较好能解决百分90的定位问题,然后使用send_keys()去进行输入操作和click()进行点击按钮操作,此时页面中会搜索出我搜索的商品,仍然通过xpath定位和click()操作搜索出的商品页面会新开窗口进入商品详情页,这时候就需要用window handles获取所有窗口的句柄并赋值给一个变量,然后使用switch to window加变量索引值切换到新窗口,有时候网页会加载比较慢所以需要使用from time import sleep导入时间模块然后使用sleep等待3秒,确保网页加载完成后进行下一步操作,然后在用find_element by xpath.click选择商品的规格型号和商品数量,接下来通过find_element_by_xpath.text获取商品详情页中我选择的

规格型号、商品数量、商品单价、订单小计/合计,通过find_element_by_xpath.click点击立即购买按钮,页面进入到确认订单页,然后通过find_element_by_xpath.text获取确认订单页规格型号、商品数量、商品单价、订单小计/合计与商品详情页选择的数据使用if判断进行比较,如果一致就print 成功,否则else pirnt失败,确保订单中的数据是我在商品详情页中选择的数据,再接下来点击提交订单操作进行下单,下单后通过调用封装好的数据库读取模块传参(ip/dbuser/dbpwd/dbname/sql)进行访问数据库中order库获取我的订单数据,然后用order库中获取的数据与下单的数据进行if判断比较判断数据库中的订单数据是否正确,如果正确就print 成功,否则else pirnt失败,然后就是定义teardown方法在teardown中用close命令关闭浏览器,然后就是进行调用执行,执行方法有三种第一种unittest.main(),main的话就是执行了testloader类中的方法帮我们搜索test开头的用例并执行,执行顺序是按ascll码分布顺序运行的,第二种方法是用unittest.testsuit()方法,先将unittest.testsuit赋值给一个变量,然后通过这个变量使用addtest命令添加用例,在使用unittest.testrunner中的run方法执行这个变量。执行顺序的化是按照添加的顺序执行的。第三种方法是用unittest.default testloader.discover(加用例存放的路径,pattern等于模块名)再赋值给一个变量,然后同样通过unittest.testrunner中的run方法执行这个变量,然后为了查看执行详情结果所以需要写入执行报告。写入执行报告的话需要先导入一个HTMLtestrunnerCN 模块使用这个模块中 的htmltestrunner来写入执行报告并存放到指定的路径中

多测师讲解unittest介绍及自动化测试实现流程_高级讲师肖sir的更多相关文章

  1. 多测师讲解自动化--rf断言(下)--_高级讲师肖sir

    1.Page Should Contain 1.1存在页面上的内容 1.2 不存在页面上的内容, 运行抛异常 1.3 Page Should Not Contain 1.4 1.5 输入页面元素,判断 ...

  2. 多测师讲解a'pi自动化框架设计思想_高级讲师肖sir

    API自动化框架API自动化框架分为conf.data.utils.api.testcase.runner.report.log8个模块.conf是用来储存系统环境.数据库.邮件等的配置参数.项目的绝 ...

  3. 多测师讲解selenium_运行报告相出错归纳_高级讲师肖sir

    <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'> EETraceback (most recent c ...

  4. 多测师讲解selenium _a标签定位()_高级讲师肖sir

    shift+ctrl+c 快捷键  调出元素

  5. 多测师讲解selenium_输入性弹框定位_高级讲师肖sir

    #输入性弹框from selenium import webdriverfrom time import sleepdrvier=webdriver.Chrome()url='file:///F:\d ...

  6. 多测师浅谈 学员实现价值就是我们的幸福_高级讲师肖sir

    学员实现价值就是我们的幸福 作为一名资深的IT高级讲师,在传统的行业IT薪资基本都是过万,作为一名IT培训教师,培养出在不同领域的测试,并且接触各种各样的产品,目前市场流行的比如银行业务系统,语音类系 ...

  7. 多测师讲解RF自动化测试实现流程_高级讲师肖sir

    1.环境搭建过程?­­整套环境需要哪些工具包,以及工具包的作用?因为我搭建的RF框架是基于Python的,所以肯定要先安装Python,python安装完之后,开始安装自动化测试框架rf3.0-在do ...

  8. 多测师讲解自动化测试 _RF连接数据库_高级讲师肖sir

    RF连接数据库:1.Connect To Database(连接数据库)2.Table Must Exist(表必须存在)3.Check If Exists In Database(查询某条件是否存在 ...

  9. 多测师讲解自动化测试 _RF关键字001_(上)_高级讲师肖sir

    讲解案例1: Open Browser http://www.baidu.com gc #打开浏览器 Maximize Browser Window #窗口最大化 sleep 2 #线程等待2秒 In ...

随机推荐

  1. 学习python你必须弄懂的 Python、Pycharm、Anaconda 三者之间的关系

    Python作为深度学习和人工智能学习的热门语言,学习一门语言,除了学会其简单的语法之外还需要对其进行运行和实现,才能实现和发挥其功能和作用.下面来介绍运行Python代码常用到的工具总结. 一.Py ...

  2. 初次使用maven创建web工程发现只有一个idea目录,src,webapp目录都不见了,解决方案

    修bug系列2之 初次使用maven创建web项目的src目录不知所踪 窗外下着下雨,屋内的我学着maven,本以为轻轻松松,没想到还是遇到了bug.好了不说了,来看看我是怎么解决的. 在初次使用ma ...

  3. Linux:nginx负载均衡

    前提:web服务器框架已搭建好lamp/lnmp),已配置好虚拟主机名(这个的配置在上几章中有写). nginx做负载均衡主要的模块是upstream. 1.在新的机器上安装nginx 创建用户ngi ...

  4. [极客大挑战 2019]Secret File wp

    通过标题考虑可能为文件包含漏洞方面 打开网页 从页面并没任何思路,查看源代码 得到有一个跳转到./Archive_room.php的超链接,打开Archive_room.php 中央有一个secret ...

  5. 【转】PHP面试总结

    文章出处:https://www.cnblogs.com/codetao/p/6418127.html

  6. git注册到git管理远程仓库

    注册: ① 注册github网站:地址:https://github.com/,其中sign up 是注册,sign in是登录 (如果是用QQ邮箱的话,如果觉得收不到邮箱,可能是在垃圾箱哦) ② 之 ...

  7. node.js conditionDebug VScode 配置

    launch.json { // 使用 IntelliSense 了解相关属性. // 悬停以查看现有属性的描述. // 欲了解更多信息,请访问: https://go.microsoft.com/f ...

  8. JS 数组, 对象的增查改删(多语法对比)

    数据结构横向对比, 增, 查, 改, 删 建议: 在用数据结构的时候, 优先考虑Map和Set(考虑数据的唯一性), 放弃传统的数组和Object, 特别是比较复杂的数据结构时 数组 Map与Arra ...

  9. AtomicInteger原理&源码分析

    转自https://www.cnblogs.com/rever/p/8215743.html 深入解析Java AtomicInteger原子类型 在进行并发编程的时候我们需要确保程序在被多个线程并发 ...

  10. 一文搞懂Cookie,Session,Token,JWT

    HTTP协议是无状态的,无状态意味着,服务器无法给不同的客户端响应不同的信息.这样一些交互业务就无法支撑了.Cookie应运而生. Cookie 通过F12开发者工具,先瞅瞅Cookie的颜值 从图中 ...