pytest selenium 并发执行多条用例,每个用例都需要登录账号,账号不能同时登录,用例执行完毕后需要归还,保证下一个用例有账号使用,使用list管理账号。
时间: 2024-04-17 22:26:51 浏览: 156
您可以使用 pytest 的 `pytest-xdist` 插件来实现并发执行多条用例。同时,您可以使用一个账号管理类来控制账号的登录和归还。
首先,安装 `pytest-xdist` 插件:
```shell
pip install pytest-xdist
```
然后,创建一个账号管理类,例如 `AccountManager`:
```python
class AccountManager:
def __init__(self, accounts):
self.accounts = accounts
self.used_accounts = []
def get_account(self):
account = self.accounts.pop(0)
self.used_accounts.append(account)
return account
def release_account(self, account):
self.used_accounts.remove(account)
self.accounts.append(account)
```
在测试文件中,您可以使用 `pytest.fixture` 来创建一个共享的账号管理实例,并在测试用例中使用它来获取和释放账号:
```python
import pytest
@pytest.fixture(scope="session")
def account_manager():
# 创建账号列表
accounts = ["account1", "account2", "account3"]
# 创建账号管理实例
manager = AccountManager(accounts)
yield manager
# 测试会话结束后,归还所有账号
for account in manager.used_accounts:
manager.release_account(account)
def test_case(account_manager):
# 获取账号
account = account_manager.get_account()
# 使用账号执行测试逻辑
# ...
# 释放账号
account_manager.release_account(account)
```
接下来,在运行测试时,您可以使用 `pytest-xdist` 插件来指定并发执行的数量。例如,使用 `-n` 参数来指定使用 2 个进程并发执行:
```shell
pytest -n 2
```
这样,每个用例都会获取一个账号进行登录,并在执行完毕后归还账号,保证下一个用例可以继续使用账号。
阅读全文