首页 > 解决方案 > 试图确定正确的 Python/Django 单元测试解决方案 - unittest vs pytest vs “manage.py test” vs ...?

问题描述

我是 Python 和 Django 的新手,并且正在为其中一个或两个编写单元测试,并且正在尝试浏览测试解决方案的环境以及解决一些运行时错误(即“应用程序尚未加载”时使用“ python -m unittest 测试/tests.py")。我已经阅读论坛帖子和教程几个小时了,我似乎最终得到的问题多于答案。

作为敏捷方法培训的一部分,我正在尝试做的是在 Django 模型上实现基本的 get/display/show 功能并编写测试显示序列化程序正在根据数据库中的记录(或由工厂和伪造者,这是我试图解决的另一层复杂性)。我被建议使用 AssertEquals 语句来根据给定数据库行中包含的内容验证 JSON 序列化程序输出,后者由伪造者生成,通过工厂插入并存储在变量中以供 AssertEquals 在比较值时使用。我对逻辑以及如何编写它有一个想法,但是我目前正被错误绊倒,同时试图找出最好的测试框架是什么以及哪些命令,

到目前为止,我尝试过的是:

这是我的 tests/tests.py 文件(更改了一些细节以使我的公司匿名)。该程序的目的是从 GitHub 收集和分析用户统计信息,因此引用了拉取请求(Null 是因为 PR 表/模型尚未构建 - 一旦准备好,它将是一个外键)。

import pytest
import unittest
from django.test import TestCase, Client
from rest_framework.test import RequestsClient
from db.models import Associate

req_client = RequestsClient()
req_response = req_client.get('http://127.0.0.1/api/Associates/')
assert req_response.status_code == 200
assert req_response.headers['content-type'] == "application/json"


class AssocTest(TestCase):
    
    def setUp(self):
        Associate.object.create(assoc_id='JD123456', first_name='John', last_name='Doe', email='john.doe@company.com', comments=Null, comment_count=5, pull_requests=Null, pr_count=4, reviews=3)
        pass

    def tearDown(self):
        Associate.object.dispose()
        pass

我知道这可能是一个生死攸关的问题,但我感谢您对新手的帮助和耐心。

标签: pythondjangounit-testingdjango-rest-framework

解决方案


推荐阅读