我正在尝试使用pytest来测试正在编写的模块。该模块是启动时间很长的进程的包装。因此,我想确保我具有正确的设置/拆卸逻辑,以确保初始化不会发生多次。
我当前的代码如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Pig Latin Translator</title>
</head>
<body>
<script src="JS/Translator.js"></script>
<h1>Pig Latin Translator</h1>
<br>
<form>
<input type="text" id="wordIn">
<button type="button" name="Translate" onclick="translateWord()">Translate</button>
<p id="wordOut">-</p>
</form>
<br>
</body>
</html>
我注意到我所有的测试都将从调用重置模块开始!有什么方法可以将其添加到灯具中,或者您将如何解决?
我想要的伪代码:
import pytest
import leelaZeroWrapper
@pytest.fixture(scope='module')
def leela(request):
leela = leelaZeroWrapper.LeelaWrapper()
def quit():
leela.quit()
request.addfinalizer(quit)
return leela
def test_single_play(leela):
leela.reset()
result = leela.play('b', 'a11')
assert result == [{'color': 'black', 'loc': 'a11'}]
def test_single_play_uppercase(leela):
leela.reset()
result = leela.play('WHITE', 'A11')
assert result == [{'color': 'white', 'loc': 'a11'}]
def test_reset(leela):
leela.reset()
leela.play('b', 'a11')
leela.play('w', 'a13')
leela.reset()
assert leela.current_board == []
assert leela.current_move == 0
如果初始设置不是那么繁重,我将跳过此步骤,让类初始化每个测试。我试图浏览文档中的请求对象,但是找不到合适的方法。我认为这必须以其他方式解决。有想法吗?
答案 0 :(得分:2)
只需介绍另一个执行重置的装置即可。将其设为自动使用的固定装置,以便在每次测试之前自动执行操作:
<!-- notification message -->
<?php if (isset($_SESSION['success'])) : ?>
<div class="error success" >
<h3>
<?php
echo $_SESSION['success'];
unset($_SESSION['success']);
?>
</h3>
</div>
<?php endif ?>
<!-- logged in user information -->
<?php if (isset($_SESSION['username'])) : ?>
<p>Welcome <strong><?php echo $_SESSION['username']; ?></strong></p>
<br>
<p> <a href="index.php?logout='1'" style="color: red;">Are you Ready to go HOME? Click Here!!</a> </p>
<?php endif ?>
</div>
默认的夹具范围是@pytest.fixture(scope='module')
def leela():
leela = leelaZeroWrapper.LeelaWrapper()
yield leela
leela.quit()
@pytest.fixture(autouse=True)
def reset(leela):
leela.reset()
def test_single_play(leela):
result = leela.play('b', 'a11')
assert result == [{'color': 'black', 'loc': 'a11'}]
,因此function
夹具将在模块中的每个测试之前重新运行。