>  기사  >  백엔드 개발  >  파이썬 단위 테스트란 무엇입니까? (자세한 예시)

파이썬 단위 테스트란 무엇입니까? (자세한 예시)

乌拉乌拉~
乌拉乌拉~원래의
2018-08-23 13:38:142600검색

다음 글에서는 파이썬에서 단위 테스트가 무엇인지 알아보겠습니다. Python 단위 테스트에 대해 알아보고 Python 프로그래밍에서 Python 단위 테스트가 수행할 수 있는 역할에 대해 알아보세요.

단위 테스트

단위 테스트는 모듈, 함수 또는 클래스의 정확성을 테스트하는 데 사용됩니다.

예를 들어, abs() 함수의 경우 다음 테스트 사례를 작성할 수 있습니다:

1. 1, 1.2, 0.99와 같은 양수를 입력하고 반환 값이 입력과 동일할 것으로 예상합니다.

2. -1.2, -0.99와 같은 음수를 입력합니다.

3. 0을 입력하고

4를 입력합니다. None, [], {}와 같은 숫자 유형에서는 TypeError가 발생할 것으로 예상합니다.

위의 테스트 케이스를 테스트 모듈에 넣어보세요. 이는 완전한 단위 테스트입니다.

단위 테스트를 통과하면 테스트한 기능이 정상적으로 작동할 수 있다는 의미입니다. 단위 테스트가 실패하면 함수에 버그가 있거나, 테스트 조건을 잘못 입력한 경우이므로 이를 수정해야 단위 테스트를 통과할 수 있습니다.

단위 테스트에 합격하면 무슨 소용이 있나요? abs() 함수 코드를 수정하면 단위 테스트만 다시 실행하면 됩니다. 테스트가 통과하면 수정 사항이 테스트에 실패하더라도 원래 동작에 영향을 주지 않는다는 뜻입니다. 수정을 의미합니다. 원래 동작과 일치하지 않는 경우 코드를 수정하거나 테스트를 수정하세요.

이 테스트 중심 개발 모델의 가장 큰 이점은 프로그램 모듈의 동작이 우리가 설계한 테스트 사례를 준수하는지 확인하는 것입니다. 나중에 수정하더라도 모듈 동작이 여전히 올바르다는 것을 크게 보장할 수 있습니다.

Dict 클래스를 작성해 보겠습니다. 이 클래스는 dict와 동일하게 작동하지만 속성을 통해 액세스할 수 있습니다.

 >>> d = Dict(a=1, b=2)
>>> d['a']
1
>>> d.a
1

Mydict.py 코드는 다음과 같습니다.

class Dict(dict):
    def __init__(self, **kw):
        super().__init__(**kw)
    def __getattr__(self, key):
        try:
            return self[key]
        except KeyError:
            raise AttributeError(r"'Dict' object has no attribute '%s'" % key)
    def __setattr__(self, key, value):
        self[key] = value

단위 테스트를 작성하려면, Python과 함께 제공되는 단위 테스트 모듈을 도입하고 다음과 같이 mydict_test.py를 작성해야 합니다.

import unittest

from mydict import Dict
class TestDict(unittest.TestCase):
    def test_init(self):
        d = Dict(a=1, b='test')
        self.assertEqual(d.a, 1)
        self.assertEqual(d.b, 'test')
        self.assertTrue(isinstance(d, dict))
    def test_key(self):
        d = Dict()
        d['key'] = 'value'
        self.assertEqual(d.key, 'value')
    def test_attr(self):
        d = Dict()
        d.key = 'value'
        self.assertTrue('key' in d)
        self.assertEqual(d['key'], 'value')
    def test_keyerror(self):
        d = Dict()
        with self.assertRaises(KeyError):
            value = d['empty']
    def test_attrerror(self):
        d = Dict()
        with self.assertRaises(AttributeError):
            value = d.empty

단위 테스트를 작성할 때 단위 테스트를 상속하는 테스트 클래스를 작성해야 합니다.TestCase.

test로 시작하는 메서드는 테스트 메서드입니다. test로 시작하지 않는 메서드는 테스트 메서드로 간주되지 않으며 테스트 중에 실행되지 않습니다.

각 테스트 유형마다 test_xxx() 메서드를 작성해야 합니다. Unittest.TestCase는 다양한 조건부 판단을 기본으로 제공하므로 출력이 기대한 것과 같은지 확인하려면 이러한 메서드만 호출하면 됩니다. 가장 일반적으로 사용되는 주장은 AssertEqual()입니다.

self.assertEqual(abs(-1), 1) # 断言函数返回的结果与1相等

또 다른 중요한 주장은 지정된 유형의 오류가 발생할 것으로 예상하는 것입니다. 예를 들어 d['empty']를 통해 존재하지 않는 키에 액세스할 때 주장은 다음과 같습니다. KeyError 발생:

with self.assertRaises(KeyError):
    value = d['empty']

d.empty를 통해 존재하지 않는 키에 액세스하면 AttributeError가 발생할 것으로 예상됩니다.

with self.assertRaises(AttributeError):
    value = d.empty

단위 테스트 실행

단위 테스트가 작성되면 실행할 수 있습니다. 단위 테스트. 이를 실행하는 가장 간단한 방법은 mydict_test.py 끝에 두 줄의 코드를 추가하는 것입니다:

if __name__ == '__main__':
    unittest.main()

这样就可以把mydict_test.py当做正常的python脚本运行:

$ python mydict_test.py

另一种方法是在命令行通过参数-m unittest直接运行单元测试:

$ python -m unittest mydict_test
.....
----------------------------------------------------------------------
Ran 5 tests in 0.000s
OK

 这是推荐的做法,因为这样可以一次批量运行很多单元测试,并且,有很多工具可以自动来运行这些单元测试。

以上就是本篇文章所讲述的所有内容,这篇文章主要介绍了python单元测试的相关知识,希望你能借助资料从而理解上述所说的内容。希望我在这片文章所讲述的内容能够对你有所帮助,让你学习python更加轻松。

更多相关知识,请访问php中文网Python教程栏目。

위 내용은 파이썬 단위 테스트란 무엇입니까? (자세한 예시)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.