Python 单元测试代码组织 - Trello API 测试
Python unittest code organization - Trello API testing
我正在 Python 中测试 Trello API,我有两个文件,第一个包含用于创建随机名称的代码和用于 POST、GET 和PUT 方法。
我的单元测试在不同的文件中:
import unittest
from board_details import *
class BoardDetails(unittest.TestCase):
# create new board, get its details and then change board's name
def test_post_board(self):
name = nonce(10)
result_post = post_board_name(name)
self.assertEqual(result_post.json()['name'], name)
self.assertEqual(result_post.status_code, 200)
self.assertEquals(len(name), 10)
def test_get_details(self):
name = nonce(10)
result_post = post_board_name(name)
board_id = result_post.json()['id']
result_get = get_board_detals(board_id)
self.assertEqual(result_get.status_code, 200)
self.assertEquals(len(name), 10)
self.assertTrue('name', name)
self.assertTrue(result_get.headers,'application/json')
def test_put_new_name(self):
name = nonce(10)
result_put = put_new_board_name(name)
self.assertEqual(result_put.json()['name'], name)
self.assertEqual(result_put.status_code, 200)
if __name__ == '__main__':
unittest.main()
它工作正常,所有测试都通过了。但我认为仍有问题。如果我以正确的方式写它,有人可以告诉我吗?
我重复 "name = nonce(10)" 三遍。我该如何做?
您可以创建一个 setUp
函数,它将在每次测试之前 运行。类似于:
def setUp(self):
self.name = nonce(10)
然后更新您的测试以查看 self.name
而不是 name
。
它不适用于这种情况,但有一个等效的 tearDown
函数,它将在每次测试后 运行 用于清理任何文件、连接或任何您的测试可能会用到的东西已创建。
此外,您可能需要考虑将测试分解为单独的函数,而不是在一个测试中使用多个断言。您可能会为了可读性而牺牲速度,但是随着您的测试变得越来越复杂,这可以使故障排除变得更加容易。它会按原样工作,只是一个建议。
我正在 Python 中测试 Trello API,我有两个文件,第一个包含用于创建随机名称的代码和用于 POST、GET 和PUT 方法。
我的单元测试在不同的文件中:
import unittest
from board_details import *
class BoardDetails(unittest.TestCase):
# create new board, get its details and then change board's name
def test_post_board(self):
name = nonce(10)
result_post = post_board_name(name)
self.assertEqual(result_post.json()['name'], name)
self.assertEqual(result_post.status_code, 200)
self.assertEquals(len(name), 10)
def test_get_details(self):
name = nonce(10)
result_post = post_board_name(name)
board_id = result_post.json()['id']
result_get = get_board_detals(board_id)
self.assertEqual(result_get.status_code, 200)
self.assertEquals(len(name), 10)
self.assertTrue('name', name)
self.assertTrue(result_get.headers,'application/json')
def test_put_new_name(self):
name = nonce(10)
result_put = put_new_board_name(name)
self.assertEqual(result_put.json()['name'], name)
self.assertEqual(result_put.status_code, 200)
if __name__ == '__main__':
unittest.main()
它工作正常,所有测试都通过了。但我认为仍有问题。如果我以正确的方式写它,有人可以告诉我吗? 我重复 "name = nonce(10)" 三遍。我该如何做?
您可以创建一个 setUp
函数,它将在每次测试之前 运行。类似于:
def setUp(self):
self.name = nonce(10)
然后更新您的测试以查看 self.name
而不是 name
。
它不适用于这种情况,但有一个等效的 tearDown
函数,它将在每次测试后 运行 用于清理任何文件、连接或任何您的测试可能会用到的东西已创建。
此外,您可能需要考虑将测试分解为单独的函数,而不是在一个测试中使用多个断言。您可能会为了可读性而牺牲速度,但是随着您的测试变得越来越复杂,这可以使故障排除变得更加容易。它会按原样工作,只是一个建议。