doctest
Kann in docstring geschrieben werden. Kann als Legende verwendet werden.
Importieren Sie doctest, schreiben Sie Folgendes in docstring und rufen Sie doctest.testmod ()
auf. Verwenden Sie bei der Ausführung python $ {filename} .py -v
.
sample.py
# -*- coding: utf-8 -*-
import doctest
def twice(n):
"""Eine Funktion, die das Argument verdoppelt und zurückgibt
>>> twice(8)
16
>>> twice(1850923)
3701846
"""
return n * 2
if __name__ == "__main__":
doctest.testmod()
Lauf
python sample.py -v
Ergebnis
Trying:
twice(8)
Expecting:
16
ok
Trying:
twice(1850923)
Expecting:
3701846
ok
1 items had no tests:
__main__
1 items passed all tests:
2 tests in __main__.twice
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
Lesen Sie die Dokumentzeichenfolge
python
import sample
help(sample.twice)
twice(n)
Eine Funktion, die das Argument verdoppelt und zurückgibt
>>> twice(8)
16
>>> twice(1850923)
3701846
Das ist ... danke ...
** Beim Testen der Instanzmethode **
sample.py
# -*- coding: utf-8 -*-
class IntUtil:
def twice(self, n):
"""Eine Funktion, die das Argument verdoppelt und zurückgibt
>>> mine.twice(8)
16
>>> mine.twice(1850923)
3701846
"""
return n * 2
if __name__ == "__main__":
import doctest
doctest.testmod(extraglobs = {'mine': IntUtil()})
unittest
In diesem Modul werden allgemeine Unit-Tests und Integrationstests durchgeführt
setUp: Beim Start ausführen TearDown: Laufen am Ende
functions
Funktionsname | Erläuterung |
---|---|
assertEqual(a, b, msg=None) | a == b |
assertNotEqual(a, b, msg=None) | a != b |
assertTrue(expr, msg=None) | bool(x) is True |
assertFalse(x) | bool(x) is False |
assertIs(a, b) | a is b |
assertIsNot(a, b) | a is not b |
assertIsNone(x) | a is None |
assertIsNotNone(x) | a is not None |
assertIn(a, b) | a in b |
assertNotIn(a, b) | a not in b |
assertIsInstance(a, b) | isinstance(a, b) |
assertNotIsInstance(a, b) | not isinstance(a, b) |
sample_test.py
# -*- coding: utf-8 -*-
import unittest
import sample
class SampleTest(unittest.TestCase):
def setUp(self):
self.util = sample.IntUtil()
def test_twice(self):
#Ist es der gleiche Wert wie die hinzugefügte Nummer?
import random
roop = 0
while roop != 10000:
n = random.randint(0, 100)
ans = n + n
self.assertEqual(self.util.twice(n), ans)
roop += 1
if __name__ == '__main__':
unittest.main()
Recommended Posts