小编Eva*_*mer的帖子

使用 Gin-Gonic 进行单元测试

我的项目分为三个主要组件:控制器、服务和模型。当通过 URI 查询路由时,将调用控制器,然后调用服务与模型交互,然后通过 gorm 与数据库交互。

我正在尝试为控制器编写单元测试,但我很难理解如何在模拟 gin 层的同时正确模拟服务层。我可以获得一个模拟的 gin 上下文,但我无法在我的控制器方法中模拟服务层。下面是我的代码:

资源控制器

package controllers

import (
    "MyApi/models"
    "MyApi/services"
    "github.com/gin-gonic/gin"
    "net/http"
)

func GetResourceById(c *gin.Context) {
    id := c.Param("id")
    resource, err := services.GetResourceById(id)

    if err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"status": http.StatusBadRequest, "message": err})
        return
    } else if resource.ID == 0 {
        c.JSON(http.StatusNotFound, gin.H{"status": http.StatusNotFound, "message": "Resource with id:"+id+" does not exist"})
        return
    }

    c.JSON(http.StatusOK, gin.H{
        "id": resource.ID,
        "data1": resource.Data1,
        "data2": resource.Data2,
    })
}

Run Code Online (Sandbox Code Playgroud)

我想测试 c.JSON 是否以正确的http状态和其他数据返回。我需要模拟id变量、err变量和 …

testing unit-testing go go-gin

6
推荐指数
1
解决办法
1万
查看次数

Django 使用 Django Rest 框架创建自定义用户

我正在尝试使用 Django Rest Framework 创建自定义用户。我已经到了可以创建普通用户的地步,但我不确定如何将其扩展到自定义用户模型。

模型.py:

from django.db import models
from django.contrib.postgres.fields import ArrayField
from django.contrib.auth.models import User


class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    languages = ArrayField(models.CharField(max_length=30, blank=True))
Run Code Online (Sandbox Code Playgroud)

序列化程序.py:

from rest_framework import serializers
from django.contrib.auth.models import User


class UserSerializer(serializers.ModelSerializer):
    password = serializers.CharField(write_only=True)

    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email', 'username', 'password')

    def create(self, validated_data, instance=None):
        user = super(UserSerializer, self).create(validated_data)
        user.set_password(validated_data['password'])
        user.save()
        return user
Run Code Online (Sandbox Code Playgroud)

视图.py:

@api_view(['POST'])
@permission_classes((AllowAny,))
def create_user(request):
    serialized = UserSerializer(data=request.data)
    if serialized.is_valid():
        serialized.save()
        return Response(serialized.data, status=status.HTTP_201_CREATED) …
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework django-custom-user

5
推荐指数
1
解决办法
2336
查看次数

Django 2.0 用脚本填充数据库

我正在尝试使用脚本填充我的 Django 数据库,因此我不必手动输入数据。到目前为止,我有以下几点:

from my_app.models import ModelInApp
import django

django.setup()


def add_data(data1, data2):
    d, created = ModelInApp.objects.get_or_create(data1=data1, data2=data2)
    print("- Data: {0}, Created: {1}".format(str(d), str(created)))
    return d


def populate():
    # data is a list of lists
    for row in data:
        data1 = row[0]
        data2 = row[1]
        add_data(data1, data2)


if __name__ == "__main__":
    populate()
Run Code Online (Sandbox Code Playgroud)

data 变量是一个列表列表,其中包含我想要放入数据库的数据。问题是,当我运行脚本时,出现django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.错误。我使用 PostgreSQL 作为数据库。

我究竟做错了什么?

database django automation python-3.x django-2.0

3
推荐指数
3
解决办法
1万
查看次数

Python添加到一个键值的列表

我试图添加到一个列表,这是一个键的值在两个不同的(操作?).以下是一个例子:

item['foo'] = ["blah"]
item['foo'] = ["garble"]
Run Code Online (Sandbox Code Playgroud)

item字典在哪里,foo是一把钥匙.然后如果我打印foo我得到:

["garble"]

当我想要的时候

["blah", "garble"]

我如何得到我想要的最终结果?

编辑:格式化

python dictionary list

2
推荐指数
1
解决办法
266
查看次数

Unix环境下运行C程序

我正在Unix环境中编写C程序.我需要在程序执行之前从用户那里获取一个数字,如下所示:

./program.out 60

如何将整数值存储在C程序中?

c unix

1
推荐指数
1
解决办法
78
查看次数