美文网首页
pytest和unittest项目结构实例

pytest和unittest项目结构实例

作者: 清风昙 | 来源:发表于2022-05-08 00:52 被阅读0次

    pytest和unittest项目结构实例,包括base、config、data、page、test_page几部分。

    base(基类文件夹)
    ---base_page.py
    config(配置文件夹)
    ---yaml_util.py
    data(测试数据)
    ---search.yaml
    page(页面文件夹)
    ---search.py
    test_case(测试用例)
    ---test_case.py
    ---test_case1.py
    ---test_case2.py
    ---test_case3.py
    
    # base_page.py
    # 主要把常用的内容封装起来
    
    
    class Tools:
        # 浏览器
        # driver = webdriver.Chrome()
    
        # 初始化浏览器
        def __init__(self, driver):
            self.driver = driver
    
        # 访问
        def open(self, url):
            self.driver.get(url)
    
        # 元素定位 *解包元祖
        def locator(self, loc):
            return self.driver.find_element(*loc)
    
        # 输入定位
        def input(self, loc, txt):
            self.locator(loc).send_keys(txt)
    
        # 点击
        def on_click(self, loc):
            self.locator(loc).click()
    
        # 等待
        def wait(self):
            self.driver.sleep(3)
    
        # 关闭
        def quit(self):
            self.driver.quit()
    
    
    
    # yaml_util.py
    # 读取yaml数据
    import yaml
    
    
    def loadyaml(filename):
        files = open(filename, 'r', encoding='utf-8')
        data = yaml.load(files, Loader=yaml.FullLoader)
        return data
    
    
    # 测试读取yaml文件
    # data = loadyaml('../data/search.yaml')
    # print(data)
    
    
    # search.yaml
    -
      search_name: python
    
    # search.py
    # 搜索页面
    
    from selenium import webdriver
    from base.base_page import Tools
    from selenium.webdriver.common.by import By
    
    
    class SearchPage(Tools):
        # 页面地址、页面元素、页面流程
        url = 'http://www.baidu.com'
        search_input = (By.ID, 'kw')
        search_btn = (By.ID, 'su')
    
        def search(self, txt):
            self.open(self.url)
            self.input(self.search_input, txt)
            self.on_click(self.search_btn)
    
    
    # if __name__ == '__main__':
    #     driver = SearchPage(webdriver.Chrome())
    #     driver.search('python')
    
    
    # test_case.py
    # 测试用例 unittest
    
    import unittest
    from selenium import webdriver
    from time import sleep
    
    from page.search import SearchPage
    
    
    # 必须继承unittest.TestCase
    class TestCase(unittest.TestCase):
        # 用例执行前要做的事情 打开浏览器
        @classmethod
        def setUpClass(cls) -> None:
            cls.driver = webdriver.Chrome()
            cls.sp = SearchPage(cls.driver)
    
        # 用例执行后要做的事情 关闭浏览器
        @classmethod
        def tearDownClass(cls) -> None:
            cls.driver.quit()
    
        # 用例 一个test代表一个测试用例
        def test_01(self):
            self.sp.search('python')
            sleep(5)
    
    
    # 测试整个过程
    if __name__ == '__main__':
        unittest.main()
    
    # test_case1.py
    # 测试用例 unittest和使用yaml
    
    import unittest
    from selenium import webdriver
    from time import sleep
    from ddt import ddt, file_data
    
    from page.search import SearchPage
    
    
    # 必须继承unittest.TestCase
    @ddt()
    class TestCase(unittest.TestCase):
        # 用例执行前要做的事情 打开浏览器
        @classmethod
        def setUpClass(cls) -> None:
            cls.driver = webdriver.Chrome()
            cls.sp = SearchPage(cls.driver)
    
        # 用例执行后要做的事情 关闭浏览器
        @classmethod
        def tearDownClass(cls) -> None:
            cls.driver.quit()
    
        # 用例 一个test代表一个测试用例
        @file_data("../data/search.yaml")
        def test_01(self, search_name):
            self.sp.search(search_name)
            sleep(5)
    
    
    # 测试整个过程
    if __name__ == '__main__':
        unittest.main()
    
    # test_case2.py
    # 测试用例 pytest
    
    import pytest
    from selenium import webdriver
    from time import sleep
    
    from page.search import SearchPage
    
    
    class TestCase:
        # 用例执行前要做的事情 打开浏览器
        def setup_class(self):
            self.driver = webdriver.Chrome()
            self.sp = SearchPage(self.driver)
    
        # 用例执行后要做的事情 关闭浏览器
        def teardown_class(self):
            self.driver.quit()
    
        # 用例 一个test代表一个测试用例
        def test_01(self):
            self.sp.search('python')
            sleep(5)
    
    
    # 测试整个过程
    if __name__ == '__main__':
        pytest.main()
    
    # test_case3.py
    # 测试用例 pytest和使用yaml
    
    import pytest
    from selenium import webdriver
    from time import sleep
    from config.yaml_util import loadyaml
    
    from page.search import SearchPage
    
    
    class TestCase:
        # 用例执行前要做的事情 打开浏览器
        def setup_class(self):
            self.driver = webdriver.Chrome()
            self.sp = SearchPage(self.driver)
    
        # 用例执行后要做的事情 关闭浏览器
        def teardown_class(self):
            self.driver.quit()
    
        # 用例 一个test代表一个测试用例
        @pytest.mark.parametrize('udata', loadyaml('../data/search.yaml'))
        def test_01(self, udata):
            self.sp.search(udata['search_name'])
            sleep(5)
    
    
    # 测试整个过程
    if __name__ == '__main__':
        pytest.main()
    

    相关文章

      网友评论

          本文标题:pytest和unittest项目结构实例

          本文链接:https://www.haomeiwen.com/subject/fjmfurtx.html