我想为Django REST Framework应用程序的视图编写单元测试。测试应使用POST上传 CSV 文件。
@staticmethod
def _file_upload(client, string, args, file_name):
base_path = os.path.dirname(os.path.realpath(__file__))
with open(base_path + file_name, 'rb') as data:
data = {
'file': data
}
response = client.post(reverse(string, args=[args]), data, format = "multipart")
return response.status_code, response.data
我使用的上述代码显然无法正常工作,但显示以下错误
缺少文件名。请求应包含带有文件名参数的Content-Disposition标头。
以下代码是我想通过单元测试进行测试的代码。
class ChartOfAccounts(views.APIView):
parser_classes = (JSONParser, FileUploadParser)
def post(self, request, pk, *args, **kwargs):
request.FILES['file'].seek(0)
csv_data = CSVUtils.format_request_csv(request.FILES['file'])
try:
coa_data = CSVUtils.process_chart_of_accounts_csv(company, csv_data)
serializer = CoASerializer(coa_data, many=True)
if len(serializer.data) > 0:
return Utils.dispatch_success(request, serializer.data)
except Exception as e:
error = ["%s" % e]
return Utils.dispatch_failure(request, 'DATA_PARSING_ISSUE', error)
欢迎任何有关此事的帮助。提前致谢
答案 0 :(得分:2)
我已使用不同方法解决了我的问题,其中包含HTTP标头 HTTP_CONTENT_DISPOSITION , HTTP_CONTENT_TYPE {{3参考
这是我的代码
@staticmethod
def _file_upload_csv( string, args, file_name):
base_path = os.path.dirname(os.path.realpath(__file__))
data = open(base_path + file_name, 'rb')
data = SimpleUploadedFile(content = data.read(),name = data.name,content_type='multipart/form-data')
factory = RequestFactory()
user = User.objects.get(username=UserConstant.ADMIN_USERNAME)
view = ChartOfAccounts.as_view()
content_type = 'multipart/form-data'
headers= {
'HTTP_CONTENT_TYPE': content_type,
'HTTP_CONTENT_DISPOSITION': 'attachment; filename='+file_name}
request = factory.post(reverse(string, args=[args]),{'file': data},
**headers)
force_authenticate(request, user=user)
response = view(request, args)
return response.status_code, response.data
**标题完成了这个技巧......
答案 1 :(得分:0)
这就是我所做的
$(document).ready(function(){
$("#card-01").hover(function(){
$("#popup-01").css("opacity", "1");
}, function(){
$("#popup-01").css("opacity", "0");
});
});