基于unittest编写单元测试代码,要求: (45分) 1、被测函数功能:计算三个数据的平均值,这三个数据作为函数的参数; 2、需要计算的三个数据,以及其平均值都放在一个yaml文件中; 3、 写单元测试框架及其代码,从yaml文件中读取数据,测试1中的被测函数;
时间: 2024-02-20 21:02:21 浏览: 96
好的,下面是一个例子,假设有一个 `calc_average` 函数需要计算三个数的平均值,这三个数从一个 YAML 文件中读取。
YAML 文件内容如下:
```yaml
data:
- a: 1
b: 2
c: 3
expected: 2.0
- a: 4
b: 5
c: 6
expected: 5.0
- a: 7
b: 8
c: 9
expected: 8.0
```
我们可以使用 PyYAML 库来读取这个 YAML 文件,然后编写单元测试来测试 `calc_average` 函数的正确性。
```python
import unittest
import yaml
def calc_average(a, b, c):
return (a + b + c) / 3
class TestCalcAverage(unittest.TestCase):
def setUp(self):
with open('data.yaml', 'r') as f:
self.test_data = yaml.load(f, Loader=yaml.FullLoader)['data']
def test_calc_average(self):
for data in self.test_data:
a = data['a']
b = data['b']
c = data['c']
expected = data['expected']
result = calc_average(a, b, c)
self.assertAlmostEqual(result, expected)
if __name__ == '__main__':
unittest.main()
```
在这个例子中,我们使用了 `yaml` 模块来读取 YAML 文件,得到一个包含测试数据的列表 `self.test_data`。在 `setUp` 方法中,我们在每个测试用例执行前读取一次数据,以便于测试数据的复用。
在 `test_calc_average` 方法中,我们遍历测试数据列表,分别获取每组测试数据的三个数 `a`、`b`、`c`,以及期望的平均值 `expected`。然后调用 `calc_average` 函数计算平均值,并使用 `self.assertAlmostEqual` 断言计算结果和期望值的差距是否小于某个阈值(默认为 7 位小数),如果不满足条件,将会抛出 `AssertionError` 异常,表示测试失败。
最后运行该测试文件,将会执行所有的测试用例,输出测试结果。
阅读全文