2019 Selenium3与Python3实战开发Web自动化测试框架(二)

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!

接着上一篇博客继续往下写 :2019 Selenium3与Python3实战开发Web自动化测试框架(一)_cdtaogang's blog-CSDN博客_python web自动化测试入门与实战

非VIP用户请点击这里进行查阅 

目录

四丶Unittest介绍及项目实战中的运用

五丶数据驱动的介绍及使用

六丶关键字模型的介绍及运用


四丶Unittest介绍及项目实战中的运用

1.unittest介绍及运用

  • 在case包下创建一个unittest_case模块,编写如下代码,在继承unittest模块的TestCase类时,需要定义以test开头的方法才能在运行unittest测试代码时被调用执行
# -*- coding: utf-8 -*-
__author__ = 'cdtaogang'
__date__ = '2019/7/3 18:48'
import unittest


class FirstCase_02(unittest.TestCase):
    def test_01(self):
        print("test_01")

    def test_02(self):
        print("test_02")

    def say_hello(self):
        print("say_hello")


if __name__ == '__main__':
    unittest.main()
  • 运行以上代码,结果已说明一切,只调用了以test开头的方法

2.unittest前置条件和后置条件

  • 每当执行一条case前都会先去调用setUp方法,case执行完成后又会去调用tearDown方法;根据这个特性就可以与first_case中的po模型结合解决之前遗留的注册页面输入框内容清空的问题

3.unittest和po模型结合梳理执行所有case

说明:在first_case模块中让FirstCase类继承unittest.TestCase类,这样的话就可以定义setUp方法来完成创建一个全局的driver,因为其特性可以在执行每条case时候会去执行setUp方法即打开一个新的浏览器窗口,这样的话就解决了同意浏览器执行多条case时,输入框内容不清空的问题,然后再在FirstCase类中定义tearDown方法来关闭浏览器窗口,最后在执行case的时候就不需要main函数,因为我们的FirstCase类继承于unittest.TestCase类并且我们的测试方法均以test开头的,只需要在if __name__ == '__main__':中调用unittest.main()方法即可,堪称完美

  • unittest和po模型结合结合后,first_case模块中的代码如下

  • 运行代码,成功测试5个case,测试结果正确,说明一下测试结果,博主测试的数据全是回到错误提示信息,所以在以下无的结果中4个提示的是注册失败了,此条case执行成功,注册失败对应的case为test_register_success该测试条件为测试注册页面中是否存在获取得到注册功能的元素,不存在则表示注册成功反之则表示注册失败,因为验证码这块还没有加入代码中所以test_register_success这个case肯定是注册失败的

  • 为了验证打印"注册成功,此条case执行失败"即表示注册页面没有要测试的错误提示信息,所以博主将test_register_username_error这个case传入的注册数据中的name的数据改为正确格式的数据,则就会出现调用get_error_msg方法返回的text值为None,说明页面没有该错误提示信息元素了,需要注意的通过get_element获取不到页面元素时则返回None,那么在get_error_msg方法中去调用element对象的text方法则会提示错误,因为None没有任何方法,所以在get_error_msg中需要进行异常处理,当出现异常则表示无法找到页面中错误提示信息的元素,即text=None,代码如下
def get_error_msg(self, info, error_msg):
    """获取错误信息"""
    try:
        if info == "email_error":
            text = self.reg_page.get_user_email_error_element().text
        elif info == "username_error":
            text = self.reg_page.get_user_name_error_element().text
        elif info == "password_error":
            text = self.reg_page.get_password_error_element().text
        else:
            text = self.reg_page.get_captcha_code_error_element().text
    except:
        text = None
    return text
  • 紧接着在first_case模块中的test_register_username_error方法中将传递的name值改为正确格式的数据,运行代码后,在测试结果中成功打印出"注册成功,此条case执行失败"即表示测试的用户名数据注册成功

4.unittest容器的使用

  • 使用装饰器来管理测试类中定义的方法

  • 运行代码后,从结果可以看出setUpClass方法是在所有case执行前执行,tearDownClass方法则是在所有case执行之后才执行

  • 使用unittest容器,只执行想要执行的case,只需要添加test_02到容器中,最后运行容器即可

  • 运行代码后,成功的只执行test_02的case

5.unittest用例执行顺序及case跳过

  • case执行顺序,默认是以字母或者数字的升序进行执行的,如下在代码中添加test_03查看执行顺序

  • 通过容器来控制执行的顺序

  • 如不想执行test_03这条case,可以使用unittest.skip方法进行case的跳过

6.如何大批量运行case文件

  • 如在case包下创建一个unittest_case02.py模块,模块中有与unittest_case同样的case,如何同时运行两个模块中的case

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
课程简介:课程介绍你是否在寻找机会进入自动化测试领域?你是否渴望学习selenium webdriver + Java以及**的框架和技术进行web自动化测试?你是否感兴趣学习Selenium如何用在你现有的项目里的?这门课带你从Selenium搭建环境开始讲起,然后学习常用方法,单元测试,PO设计模式, jenkins等。我们假设学员没有任何自动化经验,来设计的这套课程。每个课题都从最基础的开始讲起。Selenium相关的该覆盖的课题都覆盖了。全程手写代码,逐步迭代,方便学习。例子都是来自于真实的web应用项目,帮助你理解不同的组件怎么用上自动化,这将展示给你一个行业层面的框架,增加自信心。这门课涵盖到基础到高级项目实战。您将会学到什么学完课程以后,你将了解Selenium Webdriver知识你将具备设计数据驱动框架、Page Object、等搭建自动化框架的能力用众多实例对Selenium现实场景应用进行深入理解了解单元测试, Jenkins, HTML报告,并发测试 你从网上随便选择一个网站,都可以尝试实现自动化,用所有可能的测试用例进行自动化测试将提高你的编码技能,以编写最优化的自动化测试用例代码你基本可以应对任何Selenium面试,并能从设计阶段开始领导整个Selenium自动化项目你将能够创建漂亮的报告来打动客户或领导更深入地理解自动化指南和代码质量标准会附带一个练习网站,可以用上所有可用的WebDriver功能,实现自动化【适合人群】软件手动测试人员想转为自动化测试的人员自动化软件测试人员想加强专业技能的刚毕业学生想从事软件行业QA 组长或项目经理【课程优势】学完课程以后,你将拥有完整的Selenium Webdriver知识,完整的项目实战【讲师介绍】资质介绍:12年以上开发、自动测试方面经验,其中7年以上测试开发经验,现为技术架构师新书“Python3+Selenium3自动化测试项目实战”作者【课程咨询】作者联系QQ:2574674466 完善的学习文档            

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cdtaogang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值