美文网首页
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