Selenium + Python 自动化测试11(unittest组织用例)

        我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。

上一篇我们讨论了unittest基本使用方法。

         本篇文章我们接着讲。一些概念和一些常用的构造测试集的方法。

1、基本概念

1)Test Case

         一个Test Case的实例就是一个测试用例。可以完成一整个的测试流程。包括测试前准备 测试环境的搭建(setUp)、实现测试过程的代码(run),以及测试后环境的还原(tearDown)。

单元测试的本质就是一个测试用例就是一个完整的测试单元,通过运行这个测试单元,可以对某个功能进行测试验证。

2)Test Suite

         一个功能一般需要多条测试案例,可以把多个测试用例集合在一起执行,这就产生了测试套件:Test Suite概念。可以通过addTest加载Test Case到Test Suite中执行。

3)Test Runner

         unittest 框架中,通过TextTestRunner 类提供的run()方法来执行Test Suite/Test Case,

Test Runner 可以使用图形界面、文本界面,返回一个特殊的值来表示测试执行的结果。

Test Fixture

         对一个测试用例环境的搭建和销毁就是一个Fixture。我们通过Test Case中setUp、tearDown来实现。

2、Test Suite 用法举例

1)我们先准备 2条测试用例

下面是我们写的登录两条用例:

#输入正确的密码登录成功测试

def test_login_Y(self):

    driver = self.driver

    username = "standard_user"

    password = "secret_sauce"

    print("登录的用户名是:%s,密码是:%s"%(username,password))

    #打开浏览器,并最大化

    driver.get("https://www.saucedemo.com/")

    driver.maximize_window()

    time.sleep(3)



    #输入用户名,

    driver.find_element_by_name("user-name").send_keys(username)  # by name 定位

    #输入密码

    driver.find_element_by_name("password").send_keys(password)  # by name 定位

    #点击登录按钮

    driver.find_element_by_id("login-button").click()  # by ID 定位



    time.sleep(3)

    #加入断言  //*[@id="header_container"]/div[1]/div[2]/div

    # 验证有显示:Products

    UIResult = driver.find_element_by_xpath('//*[@id="header_container"]/div[2]/span').text

    self.assertEqual("Products", UIResult, "密码正确登录验证失败,fail")



# 输入错误的密码登录失败测试

def test_login_N(self):

    driver = self.driver

    username = "standard_user"

    password = "secret_NG"

    print("登录的用户名是:%s,密码是:%s" % (username, password))

    # 打开浏览器,并最大化

    driver.get("https://www.saucedemo.com/")

    driver.maximize_window()

    time.sleep(3)



    # 输入用户名,

    driver.find_element_by_name("user-name").send_keys(username)  # by name 定位

    # 输入密码

    driver.find_element_by_name("password").send_keys(password)  # by name 定位

    # 点击登录按钮

    driver.find_element_by_id("login-button").click()  # by ID 定位



    time.sleep(3)

    # 加入断言  //*[@id="header_container"]/div[1]/div[2]/div

    # 验证有报错显示:

    UIResult = driver.find_element_by_xpath('//*[@id="login_button_container"]/div/form/div[3]/h3').text

    self.assertEqual("Epic sadface: Username and password do not match any user in this service", UIResult, "密码错误登录验证失败,fail")

下面我们把它折叠起来就比较容易看出:两条用例

2)下面我们构造测试用例集
if __name__ =='__main__':

    #unittest.main()

    #构造测试用例集

    suite=unittest.TestSuite()

    suite.addTest(LoginTest('test_login_Y'))

    suite.addTest(LoginTest('test_login_N'))
    

    #执行测试

    runner=unittest.TextTestRunner()

    runner.run(suite)

连一起前面的代码执行:

查看下面的测试结果,可以看到执行了2条案例,也有一个简单的结果呈现。

今天就先讲到这里了。

每天进步一点点,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

立黄昏粥可温

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

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

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

打赏作者

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

抵扣说明:

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

余额充值