小编cma*_*sri的帖子

使用枚举时禁用pylint警告E1101

我最近看到Anthony Fox的这篇文章,它展示了如何使用枚举来创建django CharFields中的选择集,我认为它非常整洁.

基本上,您创建了Enum的子类:

from enum import Enum

class ChoiceEnum(Enum):
    @classmethod
    def choices(cls):
        return tuple((x.name, x.value) for x in cls)
Run Code Online (Sandbox Code Playgroud)

然后可以在您的模型中使用它,如下所示:

from .utils import ChoiceEnum

class Car(models.Model):
    class Colors(ChoiceEnum):
        RED = 'red'
        WHITE = 'white'
        BLUE = 'blue'

    color = models.CharField(max_length=5, choices=Colors.choices(), default=Colors.RED.value)

red_cars = Car.objects.filter(color=Car.Colors.RED.value)
Run Code Online (Sandbox Code Playgroud)

但是,每当您尝试访问枚举值时,pylint都会发出警告(Colors.RED.value)

E1101:Instance of 'str' has no 'value' member

有没有办法避免/禁用ChoiceEnum的每个实例的此警告?

这个答案只适用于子类ChoiceEnum,而不是ChoiceEnum它本身.

python django enums pylint

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

vue-test-utils:如何测试Mounted()生命周期挂钩中的逻辑(使用vuex)?

我正在尝试为Vue的mounted()生命周期挂钩中的逻辑编写单元测试,但运气不佳。问题似乎mounted()是使用vue-test-utils挂载组件时从未调用过mount。这是我要测试的Vue组件:

<template>
  <div></div>
</template>

<script>   
export default {
  name: 'MyComponent',
  mounted () {
    this.$store.dispatch('logout')
  }
}
</script>
Run Code Online (Sandbox Code Playgroud)

测试本身:

import { mount, createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
import MyComponent from '@/components/MyComponent'

const localVue = createLocalVue()

localVue.use(Vuex)

describe('MyComponent.vue', () => {
  let store
  let actions

  beforeEach(() => {
    actions = {
      logout: jest.fn().mockName('logout')
    }
    store = new Vuex.Store({
      state: {},
      actions
    })
  })

  it('calls store "logout" action', () => {
    mount(MyComponent, { localVue, …
Run Code Online (Sandbox Code Playgroud)

unit-testing vue.js jestjs vuex vue-test-utils

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

标签 统计

django ×1

enums ×1

jestjs ×1

pylint ×1

python ×1

unit-testing ×1

vue-test-utils ×1

vue.js ×1

vuex ×1