一文带你了解UI自动化测试框架

Python+Selenium+Unittest+Ddt+HTMLReport分布式数据驱动自动化测试框架结构

1、Business:公共业务模块,如登录模块,可以把登录模块进行封装供调用

------login_business.py

  1. from Page_Object.Common_Page.login_page import Login_Page

  2. from HTMLReport import logger

  3. import time

  4. def login(driver, username, password):

  5. """

  6. 登录业务

  7. :param driver:浏览器驱动

  8. :param username:用户名

  9. :param password:密码

  10. :return:None

  11. """

  12. logger().info(f"使用用户名:{username},密码:{password}进行登陆")

  13. login_page = Login_Page(driver)

  14. login_page.send_username(username)

  15. login_page.send_password(password)

  16. login_page.submit()

  17. time.sleep(2)

----Base_url.py:对应的url地址

2、Common:与业务无关的公共模块,如对Selenium的二次封装,方便后期的调用,还有一些工具类,如在读取数据时需要对读取文件进行封装

3、PageOBject:这个就应该不用多说了,页面元素的封装,这个根据自己公司系统的业务去做分层封装(不做过多解释)

4、report:测试报告

5、TestCase:测试用例层,下面以logincase为例子

---logincase.py

  1. import unittest

  2. from Business.Base_url import url_index

  3. import ddt

  4. from Common.tools.read_txt import read_txt

  5. from HTMLReport import logger

  6. from Page_Object.Common_Page.index_page import Index_Page

  7. from Common.selenium_library import SeleniumBase

  8. from Business.login_business import login

  9. @ddt.ddt

  10. class Test_login(unittest.TestCase):

  11. def setUp(self):

  12. self.driver = SeleniumBase().get_web_driver()

  13. def tearDown(self):

  14. SeleniumBase(self.driver).quit()

  15. @ddt.unpack

  16. @ddt.data(*read_txt('TestData/login_user_password.txt'))

  17. def test_login(self, username, password, assert_type):

  18. se = SeleniumBase(self.driver)

  19. se.get(url_index)

  20. login(self.driver, username, password)

  21. se.add_page_screen_shot()

  22. if assert_type == '1':

  23. logger().info("断言登陆成功")

  24. text = Index_Page(self.driver).login_success()

  25. self.assertIn("测试", text, '登陆成功断言')

  26. elif assert_type == "2":

  27. text = self.driver.find_element_by_id("submit").text

  28. self.assertIn("立即登录", text, '登陆失败断言')

  29. elif assert_type == "3":

  30. text = self.driver.find_element_by_id("submit").text

  31. self.assertIn("立即登录", text, '登陆失败断言')

  32. elif assert_type == "4":

  33. text = self.driver.find_element_by_id("submit").text

  34. self.assertIn("立即登录", text, '登陆失败断言')

  35. else:

  36. logger().info(f"未知断言类型{assert_type}")

  37. self.assertTrue(False, "未知断言类型")

6、TestData:测试数据,对应用例的数据都是在这里去取

7、TestSuite:测试套件,以登录套件为例

---loginsuite.py

  1. import unittest

  2. from TestCase.LoginCase import login_case

  3. def return_suite():

  4. suite=unittest.TestSuite()

  5. loader=unittest.TestLoader()

  6. suite.addTests(loader.loadTestsFromTestCase(login_case.Test_login))

  7. return suite

8、browser.ini:浏览器配置文件

  1. [local]

  2. local_browser = False

  3. wait_time = 10

  4. [browser]

  5. name = chrome

  6. ;name = firefox

  7. ;name = ie

  8. window_width =

  9. window_height =

  10. [grid]

  11. command_executor = http://127.0.0.1:4444/wd/hub

  12. headless = False

  13. proxy =

9、run.py:整体运行文件

  1. import unittest

  2. from TestSuite.LinesSuite import lines_suite

  3. from TestSuite.LinesSuite import itinerary_suite

  4. import HTMLReport

  5. suite = unittest.TestSuite()

  6. # suite.addTests(login_suite.return_suite())

  7. suite.addTests(lines_suite.return_suite())

  8. suite.addTests(itinerary_suite.return_suite())

  9. HTMLReport.TestRunner(

  10. report_file_name="test",

  11. title='WEB UI 自动化',

  12. description='登陆',

  13. thread_count=3

  14. ).run(suite)

10、整体框架结构图:

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值