帮我写一个python自动化测试框架
时间: 2024-05-29 10:04:46 浏览: 166
以下是一个基本的Python自动化测试框架,您可以根据需要进行修改。
1. 安装依赖库
使用pip安装以下依赖库:
- pytest:测试框架
- selenium:自动化测试工具
- pytest-html:生成测试报告
```
pip install pytest selenium pytest-html
```
2. 创建项目结构
在您的项目目录下,创建以下目录和文件:
```
myproject/
├── tests/
│ ├── pages/
│ │ ├── __init__.py
│ │ ├── base_page.py
│ │ └── home_page.py
│ ├── __init__.py
│ └── test_home_page.py
├── conftest.py
├── pytest.ini
└── requirements.txt
```
- tests/pages:存放页面对象和基础页面类。
- tests/test_home_page.py:存放测试用例。
- conftest.py:存放全局配置信息。
- pytest.ini:存放pytest的配置信息。
- requirements.txt:存放项目依赖库信息。
3. 编写页面对象类
在tests/pages目录下,创建base_page.py和home_page.py文件。base_page.py文件是基础页面类,home_page.py文件是首页页面对象类。以下是示例代码:
base_page.py:
```python
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
class BasePage:
def __init__(self, driver):
self.driver = driver
def wait_for_element_visibility(self, locator, timeout=10):
element = WebDriverWait(self.driver, timeout).until(
EC.visibility_of_element_located((By.XPATH, locator))
)
return element
def click_element(self, locator, timeout=10):
self.wait_for_element_visibility(locator, timeout).click()
def send_keys_to_element(self, locator, keys, timeout=10):
self.wait_for_element_visibility(locator, timeout).send_keys(keys)
```
home_page.py:
```python
from .base_page import BasePage
class HomePage(BasePage):
# 页面元素定位器
search_input_locator = "//input[@name='q']"
search_button_locator = "//button[@type='submit']"
def search(self, keyword):
self.send_keys_to_element(self.search_input_locator, keyword)
self.click_element(self.search_button_locator)
```
4. 编写测试用例
在tests/test_home_page.py文件中,编写测试用例。以下是示例代码:
```python
from pages.home_page import HomePage
def test_search_in_google(driver):
# 实例化首页页面对象
home_page = HomePage(driver)
# 打开Google首页
home_page.driver.get("https://www.google.com")
# 在搜索框中输入关键词并搜索
home_page.search("python")
# 验证搜索结果页面是否包含关键词
assert "python" in home_page.driver.title
```
5. 编写全局配置信息
在conftest.py文件中,编写全局配置信息。以下是示例代码:
```python
from selenium import webdriver
import pytest
@pytest.fixture(scope="session")
def driver():
# 实例化Chrome浏览器
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(options=chrome_options)
# 将浏览器窗口最大化
driver.maximize_window()
# 设置隐式等待时间为10秒
driver.implicitly_wait(10)
yield driver
# 关闭浏览器
driver.quit()
```
6. 编写pytest配置信息
在pytest.ini文件中,编写pytest配置信息。以下是示例代码:
```ini
[pytest]
addopts = --html=report.html
```
7. 运行测试
运行以下命令运行测试:
```
pytest
```
测试结果将生成在项目目录下的report.html文件中。
以上是一个基本的Python自动化测试框架,您可以根据需要进行修改和扩展。
阅读全文