Tôi đang làm việc trên phần mềm cho rô bốt, thường chạy trên Raspberry Pi. Hãy xem xét các hàng nhập khẩu của hai tập tin:python giả và thư viện chưa được cài đặt
motor.py
(chạy động cơ):
from RPi import GPIO as gpio
và client.py
(giao tiếp với máy chủ và rơle lệnh để động cơ):
from rpi.motor import Motor
Cả hai file nằm trong một thư mục có tên là rpi
, có chứa __init__.py
và __main__.py
. Không thể cài đặt gói RPi
trên các thiết bị không phải RPi. Tuy nhiên, tôi vẫn muốn thử nghiệm chức năng của client.py
.
import unittest
from unittest import mock
# Location A
class TestClient(unittest.TestCase):
# Location B
setUp(self):
# Location C
pass
Ban đầu, tôi đã cố gắng from rpi.client import Client
tại Loca, nhưng điều đó đã thất bại bởi vì nó đã cố gắng để nhập khẩu Motor, và sau đó nhập GPIO từ RPi, mà không tồn tại. Tôi cũng đã cố gắng mock.patch("rpi.client.Motor")
tại LocB (bao gồm thêm mock_motor
sau self
, và nhập khẩu Client
tại LocC, nhưng điều đó thất bại là tốt. Tôi đã cố gắng chế giễu RPi
tại Loca cũng vậy, nhưng nó đã không làm việc một trong hai.
Làm thế nào để bạn chế nhạo ?. ra một thư viện mà không được cài đặt trên hệ thống của bạn
Nếu thư viện chỉ hoạt động trên Pi, tại sao không chạy thử nghiệm trên Pi? Sau đó, bạn không phải làm bất cứ điều gì phức tạp. – davidism
Bởi vì tôi không có quyền truy cập vào Pi mọi lúc. Tôi phát triển trên máy tính của tôi, và sau đó đẩy đến github và kéo đến Pi. Nhưng tôi thà thử nghiệm trước khi cam kết. –