批量执行脚本
【摘要】 大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流作者简介:CSDN java领域新星创作者blog.csdn.net/bug…掘金LV3用户 juejin.cn/user/bug…阿里云社区专家博主,星级博主,...
大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流
作者简介:
- CSDN java领域新星创作者blog.csdn.net/bug…
- 掘金LV3用户 juejin.cn/user/bug…
- 阿里云社区专家博主,星级博主,developer.aliyun.com/bug…
- 华为云云享专家 bbs.huaweicloud.com/bug…
批量执行脚本
但我们需要扩展新的功能测试或者测试用例时,我们需要把多个测试用例组织在一起执行,我们可以通过
unittest
中的测试套件Test Suite
进行测试用例的组织
假设我们编写了2个文件test1.py
和test2.py
我们如何同时执行这2个文件呢?
# 导入unittest框架
import unittest
from selenium import webdriver
import time
# 继承TestCase这个类就会使用unittest框架来组织测试用例!
class Baidu1(unittest.TestCase):
def setUp(self) -> None: # 覆盖setUP方法,测试环境搭建!
print('---setUp---')
self.driver = webdriver.Chrome() # 获取到浏览器驱动
self.url = "http://www.baidu.com/" #测试的web链接
self.driver.maximize_window() # 浏览器最大化!
time.sleep(3)
def tearDown(self) -> None: # 覆盖tearDown方法,测试环境销毁!
print('---tearmDown---')
self.driver.quit() # 关闭浏览器,释放驱动!
# 测试用例
def test_baidu1(self):
self.driver.get(self.url) # 打开百度链接
self.driver.find_element_by_id('kw').send_keys('java') # 定位到搜索框,输入文本
time.sleep(2)
self.driver.find_element_by_id('su').click() # 定位到搜索按钮点击!
time.sleep(3)
def test_baidu2(self):
self.driver.get(self.url) # 重新打开百度链接!
self.driver.find_element_by_link_text('新闻').click() # 打开新闻导航地址
time.sleep(2)
for window in self.driver.window_handles:
self.driver.switch_to_window(window)
if window.title =='百度新闻——海量中文资讯平台':
break
self.driver.find_element_by_name('word').send_keys('赣州')
time.sleep(2)
self.driver.find_element_by_xpath('//*[@id="s_btn_wr"]').click()
time.sleep(2)
#滑动到低端!
js = 'var j = document.documentElement.scrollTop=10000'
self.driver.execute_script(js)
time.sleep(3)
#滑动到顶端
js = 'var j = document.documentElement.scrollTop=0'
self.driver.execute_script(js)
time.sleep(3)
def baidu3(self):
self.driver.get('http://baidu.com/')
self.driver.find_element_by_partial_link_text('hao').click()
time.sleep(2)
if __name__=='__main__':
unittest.main() # unittest框架提供了全局的main方法
from selenium import webdriver
import unittest
import time
from selenium.webdriver.common.action_chains import ActionChains
class test2(unittest.TestCase): # 继承 TestCase
def setUp(self) -> None:
# 测试环境搭建
print('--test2.setUp--')
self.driver = webdriver.Chrome() #获取驱动
self.url = 'https://fanyi.baidu.com/?aldtype=16047#auto/zh' # 百度翻译的url!
def tearDown(self) -> None:
#测试环境销毁
print('--test2.tearDown--')
self.driver.quit()
#测试用例!
def test_baidu1(self):
self.driver.get(self.url) # 打开百度翻译url!
self.driver.maximize_window() # 窗口最大化!
self.driver.find_element_by_id('baidu_translate_input').send_keys('unittest') # 定位到翻译搜索框
time.sleep(3)
# 定位到弹出的广告!
self.driver.find_element_by_xpath('//*[@id="app-guide"]/div/div/div[2]/span').click()
time.sleep(2)
self.driver.find_element_by_id('translate-button').click() # 定位到翻译按钮
time.sleep(3)
# 定位到翻译结果框!
test = self.driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/div/div[1]/div[2]/div[1]/div[2]/div/div/div[1]/p[2]').text
print('unitest:',test)
def test_baidu2(self):
self.driver.get(self.url)
# 定位到弹出的广告!
self.driver.find_element_by_xpath('//*[@id="app-guide"]/div/div/div[2]/span').click()
time.sleep(2)
p = self.driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/div/div/div[1]/div/span') # 定位到文档翻译
# 将鼠标移动到该位置!
ActionChains(self.driver).move_to_element(p).perform()
time.sleep(2)
# 然后定位到上传文档按钮!
self.driver.find_element_by_xpath('//*[@id="header"]/div/div/div/div[1]/div/span').click()
time.sleep(3)
if __name__ == '__main__':
unittest.main()
- addTest()
TestSuite类中的
addTest
方法可以把不同类的测试用例方法组织到测试套件中,但是这里的addTest
方法一次只能添加一个测试用例方法
这里的不足就是每次只能添加一个方法到套件中,并且要该方法的类导入
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)