import pytest class test100: def test1(self): assert 1==1 if __name__=='_main_': pytest.main([__name__])
时间: 2023-11-20 21:07:22 浏览: 39
这段代码中,你定义了一个名为test100的类,并在其中定义了一个名为test1的方法。在test1方法中,你使用了pytest库的assert语句来判断1是否等于1。然后,你使用了一个条件判断语句,检查当前脚本是否作为主程序运行。如果是主程序运行,就调用pytest库的main函数来执行当前模块中的所有测试用例。
需要注意的是,正确的条件判断应该是`if __name__=='__main__':`,而不是`if __name__=='_main_':`。双下划线在两边都要有。此外,你需要将代码放在一个.py文件中才能运行。
相关问题
写一个pytest的自动化框架代码
以下是一个简单的pytest自动化测试框架代码示例:
```python
import pytest
class TestCalculator:
def test_addition(self):
assert 2 + 2 == 4
def test_subtraction(self):
assert 4 - 2 == 2
def test_multiplication(self):
assert 2 * 2 == 4
def test_division(self):
assert 4 / 2 == 2
if __name__ == "__main__":
pytest.main()
```
在这个示例中,我们定义了一个名为TestCalculator的测试类,其中包含了四个测试用例。每个测试用例都是一个独立的函数,使用assert语句来验证预期结果是否等于实际结果。
最后,我们使用pytest.main()函数来运行所有测试用例。pytest会自动发现并执行所有以test_开头的测试用例函数,并输出测试结果。如果有任何测试用例失败,pytest会显示失败的详细信息。
unittest和pytest代码学习实践
unittest和pytest都是Python中常用的单元测试框架,用于测试代码的正确性和可靠性。下面将分别介绍它们的代码学习实践。
一、unittest
1. 测试框架初始化
```
import unittest
class TestDemo(unittest.TestCase):
def setUp(self):
# 测试用例执行前的初始化操作
pass
def tearDown(self):
# 测试用例执行后的清理操作
pass
def test_demo(self):
# 测试用例
pass
if __name__ == '__main__':
unittest.main()
```
2. 测试用例编写
```
import unittest
class TestDemo(unittest.TestCase):
def test_add(self):
self.assertEqual(1 + 2, 3)
def test_subtract(self):
self.assertEqual(3 - 2, 1)
if __name__ == '__main__':
unittest.main()
```
3. 断言方法
unittest提供了多种断言方法,常用的有以下几种:
- assertEqual(a, b):判断a是否等于b
- assertNotEqual(a, b):判断a是否不等于b
- assertTrue(x):判断x是否为True
- assertFalse(x):判断x是否为False
- assertIn(a, b):判断a是否在b中
- assertNotIn(a, b):判断a是否不在b中
- assertIs(a, b):判断a是否是b
- assertIsNot(a, b):判断a是否不是b
4. 测试套件
测试套件是由多个测试用例组成的集合,可以通过TestSuite类来创建测试套件。
```
import unittest
class TestAdd(unittest.TestCase):
def test_add1(self):
self.assertEqual(1 + 2, 3)
def test_add2(self):
self.assertEqual(2 + 3, 5)
class TestSubtract(unittest.TestCase):
def test_subtract1(self):
self.assertEqual(3 - 2, 1)
def test_subtract2(self):
self.assertEqual(5 - 3, 2)
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestAdd())
suite.addTest(TestSubtract())
unittest.TextTestRunner().run(suite)
```
二、pytest
1. 基本用法
```
def test_add():
assert 1 + 2 == 3
def test_subtract():
assert 3 - 2 == 1
```
2. 参数化测试
```
import pytest
@pytest.mark.parametrize('a, b, expected', [
(1, 2, 3),
(2, 3, 5),
])
def test_add(a, b, expected):
assert a + b == expected
```
3. fixture
fixture是pytest中的一个重要概念,可以用来提供测试用例所需要的资源。比如,我们可以通过fixture来创建数据库连接、打开浏览器等。
```
import pytest
import requests
@pytest.fixture()
def url():
return 'http://www.example.com'
def test_request(url):
response = requests.get(url)
assert response.status_code == 200
```
4. mark
mark是pytest中的一个标记机制,可以用来标记某些测试用例,方便对其进行筛选和执行。
```
import pytest
@pytest.mark.smoke
def test_add():
assert 1 + 2 == 3
@pytest.mark.regression
def test_subtract():
assert 3 - 2 == 1
```
pytest支持自定义mark,比如我们可以通过以下方式自定义一个slow mark:
```
import pytest
def pytest_configure(config):
config.addinivalue_line(
"markers", "slow: mark test as slow"
)
@pytest.mark.slow
def test_add():
assert 1 + 2 == 3
```