Pytest

Exception assert

参考:

方法:

1
2
3
>>> import pytest
>>> with pytest.raises(ZeroDivisionError) as exe_info:
...    1/0

注意:

  1. 用于捕获单个 Exception

exception 文本匹配

解说:

  • 使用 match 关键字参数
  • 匹配对象

    • 文本
    • 正则
1
2
>>> with pytest.raises(ValueError, match=r'must be \d+$'):
...     raise ValueError("value must be 42")

直接传入函数和参数,不适用 with 语句

有参数

1
2
3
4
5
6
>>> def f(x): return 1/x
...
>>> raises(ZeroDivisionError, f, 0)
<ExceptionInfo ...>
>>> raises(ZeroDivisionError, f, x=0)
<ExceptionInfo ...>

无参数

1
2
>>> raises(ZeroDivisionError, lambda: 1/0)
<ExceptionInfo ...>

数据驱动

通过 csv 文件传入测试参数

参考:

general.el ---- a key binding tool

类似 global-set-key

1
2
3
(general-define-key
 "M-x" 'amx                             ; or 'smex
 "C-s" 'counsel-grep-or-swiper)

绑定到 keymap

1
2
3
4
5
6
(general-define-key
 ;; NOTE: keymaps specified with :keymaps must be quoted
 :keymaps 'org-mode-map
 "C-c C-q" 'counsel-org-tag
 ;; ...
 )

类似 define-key, 绑定到 keymap

1
2
3
4
(general-def org-mode-map
  "C-c C-q" 'counsel-org-tag
  ;; ...
  )

指定 prefix

1
2
3
4
5
6
(general-define-key
 :prefix "C-c"
 ;; bind "C-c a" to 'org-agenda
 "a" 'org-agenda
 "b" 'counsel-bookmark
 "c" 'org-capture)

创建常用的 leader key

1
2
3
4
5
6
(defconst my-leader "C-c")

(general-create-definer my-leader-def
  ;; :prefix my-leader
  ;; or without a variable
  :prefix "C-c")

全局绑定

1
2
3
4
(my-leader-def
  "a" 'org-agenda
  "b" 'counsel-bookmark
  "c" 'org-capture)

绑定到 keymap

1
2
3
4
5
(my-leader-def
  :keymaps 'clojure-mode-map
  ;; bind "C-c C-l"
  "C-l" 'cider-load-file
  "C-z" 'cider-switch-to-repl-buffer)
1
2
3
(my-leader-def clojure-mode-map
  "C-l" 'cider-load-file
  "C-z" 'cider-switch-to-repl-buffer)