Selenium + Python 自动化测试12(unittest组织更多用例)

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

上一篇我们讨论了unittest中test suite 的构建,可以测试多条测试用例。

本篇文章我们接着讲。使用discover()方法构建更多的测试用例。

1、引入需要完成的任务

上一篇我们写了登录模块的测试用例,假如说我们又写了一个模块是退出登录的测试:

这样在我们项目文件中就有login.py 和logout.py 两个测试脚本文件。当然也可能有很多其它的需要测试的模块,那我们需要如何解决构造测试用例集的问题呢,总不能一个个去加入吧。

当然不用,可以通过discover()设置执行某一目录下所有的要测试文件。

退出登录的代码参考,当然这里还没有优化代码,后面不断改善:

复制代码
# coding=utf-8  --指定了文件内容使用的字符编码格式,告知Python解释器如何解读文件中的文本内容。



import time

importunittest

fromselenium importwebdriver



defdriverfunc():
returnwebdriver.Chrome("C:\\Users\\dewi\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe")



#使用unittest的框架,每个案例的标准形式

class LogoutTest(unittest.TestCase):
defsetUp(self):self.driver =driverfunc()

        print("退出登录测试开始")



    #退出登录测试

    def test_logout(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)

        #点击退出按钮

        driver.find_element_by_xpath('//*[@id="react-burger-menu-btn"]').click()

        driver.find_element_by_xpath('//*[@id="logout_sidebar_link"]').click()

        time.sleep(3)

        #断言:

        # 验证有显示:Login

        UIResult =driver.find_element_by_xpath('//*[@id="login-button"]').is_displayed()

        self.assertEqual(True, UIResult, "退出登录验证失败,fail")

2、discover()使用方法

1)TestLoader

这个类根据各种标准加载测试用例,并将它们返回测试套件。正常情况下不需要创建这个类的实例的。unittest提供了可共享的defaultTestLoader类,可以使用其子类和方法创建实例。其中discover()就是其中之一。

使用方法:

discover(start_dir,pattern="test*.py",top_level_dir=None)

start_dir:要测试的模块名或测试用例目录

pattern="test*.py":以test开通的所有的.py类型的文件全部执行

top_level_dir=None:测试模块的顶层目录,如果没有默认是None

2)举例说明

编写入口执行脚本:

复制代码
# coding=utf-8

import unittest

#编写测试执行入口

test_dir="./"   #测试用例的目录是当前目录

discover =unittest.defaultTestLoader.discover(test_dir,pattern="test*.py")



if__name__ =='__main__':

    run_test =unittest.TextTestRunner()

    run_test.run(discover)

执行时就会同时执行test_login.py 和test_logout.py。

查看结果:3条案例全部执行了

今天就讲到这里了。

每天进步一点点,加油!

相关推荐
waterHBO1 小时前
python 爬虫 selenium 笔记
爬虫·python·selenium
编程零零七2 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
AIAdvocate4 小时前
Pandas_数据结构详解
数据结构·python·pandas
小言从不摸鱼4 小时前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
FreakStudio6 小时前
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
python·嵌入式·面向对象·电子diy
redcocal7 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘
artificiali8 小时前
Anaconda配置pytorch的基本操作
人工智能·pytorch·python
RaidenQ8 小时前
2024.9.13 Python与图像处理新国大EE5731课程大作业,索贝尔算子计算边缘,高斯核模糊边缘,Haar小波计算边缘
图像处理·python·算法·课程设计
花生了什么树~.8 小时前
python基础知识(六)--字典遍历、公共运算符、公共方法、函数、变量分类、参数分类、拆包、引用
开发语言·python
Trouvaille ~9 小时前
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
图像处理·python·机器学习·numpy·信号处理·时间序列分析·科学计算