Selenium2+Python2.0自动化测试【18】 unittest框架①

Unittest测试框架

       前面陆续介绍了selenium自动化的基本使用,假设前面每篇的示例都是一个case,那么我们已经有很多自动化用例了,这么多的用例我们怎么去管理和测试执行呢?这里就需要引入一个框架unittest,unittest是一个单元测试框架,是Python编程的单元测试框架,要了解unittest单元测试框架,先来了解以下几个重要的概念。
测试固件(test fixture)
       测试固件包括两部分setUp()和tearDown(),执行测试代码之前的预置条件准备和测试结束之后的清理。
测试用例(test case)
       unittest中管理的最小单元是测试用例,一个测试用例,包括测试固件,和具体测试业务的函数或者方法。测试用例中必须有以test开头的函数,unittest会自动化识别test开头的函数是测试代码,如果函数不是test开头,unittest不会执行这个函数里面的脚本。

测试套件 (test suite)
       很多测试用例的集合,叫测试套件,一个测试套件可以随意管理多个测试用例。
测试执行器 (test runner)
       test runner用来执行加载测试用例,并执行用例,提供测试输出,test runner可以加载test case或者test suite进行执行测试任务。

邮箱登陆手动测试的case步骤:

预置条件:

1.使用浏览器:firefox 45

2.打开邮箱登陆页面

操作步骤:

1.输入正确的账号、密码;

2.点击登陆按钮登陆邮箱

预期结果:

成功登陆邮箱。

这个用例手动测试很简单,但是自动化代码如何判断是否登陆成功呢?我们可以这样实现:


登陆成功后,会进入邮箱首页,如上图所示若当前窗口页面出现该元素我们认为登陆成功。

# coding:utf-8
# 邮箱登陆
from selenium import webdriver
driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://mail.163.com/")
# 输入正确的账号密码登陆邮箱
driver.switch_to.frame("x-URS-iframe")
driver.find_element_by_name("email").send_keys("yunqishi")
driver.find_element_by_name("password").send_keys("12345678")
driver.find_element_by_xpath(".//*[@id='dologin']").click()
mailName = driver.find_element_by_id("spnUid").text
# 判断是否登陆成功
if mailName == u"yunqishi@163.com":
    print (u"登录成功")
else:
    print (u"登录失败")
driver.quit()

引入unittest后代码该如何写?我们将上面的代码重写看看:
# coding=utf-8
from selenium import webdriver
import time
import unittest


class Login(unittest.TestCase):

    def setUp(self):
        # 测试固件的setUp()的代码,主要是测试预置条件,打开浏览器和站点
        self.driver = webdriver.Firefox()
        self.driver.maximize_window()
        self.driver.implicitly_wait(8)
        self.driver.get("http://mail.163.com/")

    def tearDown(self):
        # 测试结束后的操作,关闭浏览器
        self.driver.quit()
        
    def test_mail_login(self):
        # 邮箱登陆  必须test开头,把测试逻辑代码封装到以test开头的方法里。
        
         self.driver.switch_to.frame("x-URS-iframe")
        self.driver.find_element_by_name("email").send_keys("yunqishi")
        self.driver.find_element_by_name("password").send_keys("12345678")
        self.driver.find_element_by_xpath(".//*[@id='dologin']").click()
        time.sleep(10)
        # 断言,判断是否登陆成功
         mailName = "yunqishi@163.com"
        mailName1 = self.driver.find_element_by_id("spnUid").text
        self.assertEqual(mailName1, mailName)


if __name__ == '__main__':
    unittest.main()

引入unittest后代码结构解读可以这里看看虫师大神的文章解读:

http://www.cnblogs.com/fnng/p/3300788.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值