python - 文件未找到错误: [Errno 2] No such file or directory: 'test_user1_user_id'

标签 python django

我收到错误FileNotFoundError:[Errno 2]没有这样的文件或目录:“test_user1_user_id”。我写在tests.py中

from datetime import datetime

from django.test import TestCase
from app.models import Companytransaction
import xlrd

# Create your tests here.
class CompanytransactionModelTests(TestCase):
    def __init__(self, sheet_path):
        self.book = xlrd.open_workbook(sheet_path)
        self.sheet = self.book.sheet_by_index(1)

    def setUp(self):
        self.book = xlrd.open_workbook('./data/excel1.xlsx')
        self.sheet = self.book.sheet_by_index(1)
        num = 0
        for row_index in range(2,4):
            row = self.sheet.row_values(row_index)
                user = Companytransaction(user_id=row[1], name=row[2], age=row[3])
                user.save()

                if num == 0:
                    self.user1 = Companytransaction.objects.create(user_id=row[1], name=row[2], age=row[3])
                    num += 1
                elif num == 1:
                    self.user2 = Companytransaction.objects.create(user_id=row[1], name=row[2], age=row[3])
                    num += 1
                else:
                    self.user3 = Companytransaction.objects.create(user_id=row[1], name=row[2], age=row[3])

    def test_user1_company_id(self):
        self.assertEqual(self.user1.user_id, '100')

    def test_user1_corporation_id(self):
        self.assertEqual(self.user1.name, 'Tom')

    def test_user1_company_name(self):
        self.assertEqual(self.user1.age, '29')

我运行python manage.py test & ./manage.py test app.tests,但它们都显示相同的错误。我肯定在models.py中创建了user_id列,所以我真的无法理解为什么会发生这个错误。我怎样才能解决这个问题? 我应该写什么?

这是回溯。

Traceback (most recent call last):
  File "./manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/xxx/myenv/lib/python3.5/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
    utility.execute()
  File "/Users/xxx/myenv/lib/python3.5/site-packages/django/core/management/__init__.py", line 355, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/xxx/myenv/lib/python3.5/site-packages/django/core/management/commands/test.py", line 29, in run_from_argv
    super(Command, self).run_from_argv(argv)
  File "/Users/xxx/myenv/lib/python3.5/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/xxx/myenv/lib/python3.5/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/Users/xxx/myenv/lib/python3.5/site-packages/django/core/management/commands/test.py", line 62, in handle
    failures = test_runner.run_tests(test_labels)
  File "/Users/xxx/myenv/lib/python3.5/site-packages/django/test/runner.py", line 600, in run_tests
    suite = self.build_suite(test_labels, extra_tests)
  File "/Users/xxx/myenv/lib/python3.5/site-packages/django/test/runner.py", line 484, in build_suite
    tests = self.test_loader.loadTestsFromName(label)
  File "/Users/xxx/.pyenv/versions/3.5.0/lib/python3.5/unittest/loader.py", line 190, in loadTestsFromName
    return self.loadTestsFromModule(obj)
  File "/Users/xxx/.pyenv/versions/3.5.0/lib/python3.5/unittest/loader.py", line 123, in loadTestsFromModule
    tests.append(self.loadTestsFromTestCase(obj))
  File "/Users/xxx/.pyenv/versions/3.5.0/lib/python3.5/unittest/loader.py", line 92, in loadTestsFromTestCase
    loaded_suite = self.suiteClass(map(testCaseClass, testCaseNames))
  File "/Users/xxx/.pyenv/versions/3.5.0/lib/python3.5/unittest/suite.py", line 24, in __init__
    self.addTests(tests)
  File "/Users/xxx/.pyenv/versions/3.5.0/lib/python3.5/unittest/suite.py", line 57, in addTests
    for test in tests:
  File "/Users/xxx/app/app/tests.py", line 12, in __init__
    self.book = xlrd.open_workbook(sheet_path)
  File "/Users/xxx/myenv/lib/python3.5/site-packages/xlrd/__init__.py", line 116, in open_workbook
    with open(filename, "rb") as f:
FileNotFoundError: [Errno 2] No such file or directory: 'test_user1_user_id'

最佳答案

问题似乎出在您的 __init__ 方法上:

def __init__(self, sheet_path):
    self.book = xlrd.open_workbook(sheet_path)
    self.sheet = self.book.sheet_by_index(1)

您收到此错误是因为您在初始化 CompanytransactionModelTests 时未提供 sheet_path。从unittest.TestCase source我们可以看到modelName 是初始化 TestCase 时的第一个也是唯一的参数。我敢打赌,您在具有类似 __init__ 代码的类上有一个名为 test_user1_user_id 的方法。

setUp 中设置测试数据是完成您正在做的事情的正确方法。如果您删除该 __init__ 代码,看起来事情应该可以正常工作。

关于python - 文件未找到错误: [Errno 2] No such file or directory: 'test_user1_user_id' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46334605/

相关文章:

python - Django / python : How to cast an integer into the equivalent enum string?

python - Django 按名称获取 url 正则表达式

python - 在 Python 中将二进制数据写入文件

python - 列表理解未按预期评估

django - 如何获取 Django 表单字段使用的小部件类型?

mysql - django.db.utils.OperationalError : (1054, "Unknown column ' commons_smsmessages.sent_date' 在 'field list' ")

python - Pillow :使用 Draw.rectangle 的奇怪行为

Python:UnicodeEncodeError: 'ascii' 编解码器无法对位置 78 中的字符 u'\xf1' 进行编码:序号不在范围内(128)

django - 在 Django Rest Framework 中接收 Base64 编码的图像并保存到 ImageField

python - Django REST Framework 文件上传导致 "Unsupported media type ' multipart/form-data'”错误