国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1)

這篇具有很好參考價值的文章主要介紹了Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

import unittest

from app import is_valid_size

class TestIsValidSize(unittest.TestCase):

def test_empty_password(self):

self.assertFalse(is_valid_size(“”))

def test_4_char_password(self):

self.assertFalse(is_valid_size(“pass”))

def test_6_char_password(self):

self.assertTrue(is_valid_size(“passwd”))

def test_16_char_password(self):

self.assertTrue(is_valid_size(“ThisIs1Password!”))

def test_20_char_password(self):

self.assertTrue(is_valid_size(“ThisIs1Password!+20”))

def test_21_char_password(self):

self.assertFalse(is_valid_size(“ThisIs1Password!+20&”))

if __name__ == “__main__”:

unittest.main()

所有這些測試都應該通過。

試驗is_valid_password


is_valid_password返回bool,要么True或者False。所以我們可以使用assertTrue還有assertFalse方法。

我們將測試:

  • 對于空密碼

  • 三個字符的密碼

  • 十個字符的密碼

  • 二十個字符的密碼

  • 對于包含無效特殊字符(如分號)的密碼

  • 對于沒有數(shù)字的密碼

  • 對于沒有小寫字母的密碼

  • 對于沒有大寫字母的密碼

  • 對于沒有有效特殊字符的密碼

  • 對于有效的密碼

  • 一個尺寸以內(nèi),[6-20]

  • 至少一個小寫和大寫字符

  • 至少一個數(shù)字

  • 沒有無效的特殊字符

TestIsValidPassword

class TestIsValidPassword(unittest.TestCase):

def test_empty_password(self):

self.assertFalse(is_valid_password())

def test_password_of_size_three(self):

self.assertFalse(is_valid_password(“pas”))

def test_password_of_size_ten(self):

self.assertFalse(is_valid_password(“Password12”))

self.assertTrue(is_valid_password(“Password1_”))

def test_password_of_size_twenty(self):

self.assertFalse(is_valid_password(“Password12Password_$”))

def test_password_with_invalid_special_character_semicolon(self):

self.assertFalse(is_valid_password(“Password1_;”))

self.assertFalse(is_valid_password(“Password1;”))

def test_password_with_no_digit(self):

self.assertFalse(is_valid_password(“Password_”))

def test_password_with_no_lowercase(self):

self.assertFalse(is_valid_password(“PASSWORD1_”))

def test_password_with_no_uppercase(self):

self.assertFalse(is_valid_password(“password1_”))

def test_password_without_valid_special_character(self):

self.assertFalse(is_valid_password(“Password1”))

def test_valid_password(self):

self.assertTrue(is_valid_password(“Password1_”))

self.assertTrue(is_valid_password(“PassWord34$”))

if __name__ == “__main__”:

unittest.main()

不是所有的測試都通過了。這些測試用例不應該通過——我們期望它們不會通過。所以當我們期待False我們得到True。某處存在缺陷或錯誤。

這些測試沒有通過:

  • test_password_of_size_ten?:?self.assertFalse(is_valid_password("Password12"))應該是False因為即使大小有效,它也沒有特殊字符。

  • test_password_without_valid_special_character?:?self.assertFalse(is_valid_password("Password1"))應該是False因為沒有有效的特殊字符。

is_valid_password函數(shù)不檢查是否存在有效的特殊字符。它檢查無效字符,但不檢查有效字符。這是由有缺陷的假設造成的,即只要密碼不包含無效字符,它就包含有效字符(包括有效的特殊字符)。

重構(gòu)is_valid_password

既然我們已經(jīng)指出了我們的bug,我們應該做出改變并重新運行測試。

要進行的更改:

  • 在…里get_invalid_chars,我們有set有效的特殊字符,valid_chars。讓我們讓它對所有函數(shù)都是全局的(例如,把它從get_invalid_chars函數(shù)并將其放在函數(shù)的頂部)。為了確保某處沒有損壞,運行測試(我們預計有兩種情況會失敗)。請注意,即使我們移動valid_chars由于get_invalid_chars?,?get_invalid_chars應該還能正常工作。

  • valid_chars是一個set,它可以用作中的一組get_invalid_chars?.?contains_character需要一段時間string?sack作為論據(jù)。我們必須解析valid_chars如同string。讓我們在下面創(chuàng)建一個函數(shù)get_invalid_chars返回一個string版本valid_chars

def get_valid_chars():

return “”.join(valid_chars)

進行測試。

  • 讓我們檢查中的有效字符is_valid_password通過在return True中的語句try封鎖。

if not contains_character(new_password, get_valid_chars()):

return False

進行測試。現(xiàn)在,所有的測試都通過了。萬歲?。?????????

  • 這更多的是重新排列代碼is_valid_password在另一種環(huán)境中自然運行良好。我們將重新排列代碼is_valid_password按此順序分別為:size, lower case, upper case, digit, invalid special character and valid special character進行測試。

結(jié)論

is_valid_password會在app.py類似于下面的代碼片段:

from string import (ascii_lowercase, ascii_uppercase, digits, punctuation,

whitespace)

valid_chars = {‘-’, ‘_’, ‘.’, ‘!’, ‘@’, ‘#’, ‘$’, ‘^’, ‘&’, ‘(’, ‘)’}

def contains_character(password: str = “”, sack: str = “”) -> bool:

has_char = False

for char in password:

if char in sack:

has_char = True

break

return has_char

def is_valid_size(password: str = “”) -> bool:

MIN_SIZE = 6

MAX_SIZE = 20

password_size = len(password)

return MIN_SIZE <= password_size <= MAX_SIZE

def get_invalid_chars():

invalid_chars = set(punctuation + whitespace) - valid_chars

return “”.join(invalid_chars)

def get_valid_chars():

return “”.join(valid_chars)

def is_valid_password(password: str = “”) -> bool:

try:

if not password:

return False

new_password = password.strip()

if not is_valid_size(new_password):

return False

if not contains_character(new_password, ascii_lowercase):

return False

if not contains_character(new_password, ascii_uppercase):

return False

if not contains_character(new_password, digits):

return False

if contains_character(new_password, get_invalid_chars()):

return False

if not contains_character(new_password, get_valid_chars()):

return False

return True

except:

return False

單元測試將會在test.py類似于下面的代碼片段:

import unittest

from app import (contains_character, is_valid_size, is_valid_password)

class TestContainsCharacter(unittest.TestCase):

def test_empty_password_or_and_empty_sack(self):

self.assertFalse(contains_character())

def test_char_i_in_str_python(self):

self.assertFalse(contains_character(“i”, “python”))

def test_str_py_in_str_python(self):

self.assertTrue(contains_character(“py”, “python”))

def test_str_python_in_str_python(self):

self.assertTrue(contains_character(“python”, “python”))

class TestIsValidSize(unittest.TestCase):

def test_empty_password(self):

self.assertFalse(is_valid_size(“”))

def test_4_char_password(self):

self.assertFalse(is_valid_size(“pass”))

def test_6_char_password(self):

self.assertTrue(is_valid_size(“passwd”))

def test_16_char_password(self):

self.assertTrue(is_valid_size(“ThisIs1Password!”))

def test_20_char_password(self):

self.assertTrue(is_valid_size(“ThisIs1Password!/+20”))

def test_21_char_password(self):

self.assertFalse(is_valid_size(“ThisIs1Password!/+20&”))

class TestIsValidPassword(unittest.TestCase):

def test_empty_password(self):

self.assertFalse(is_valid_password())

def test_password_of_size_three(self):

self.assertFalse(is_valid_password(“pas”))

def test_password_of_size_ten(self):

self.assertFalse(is_valid_password(“Password12”))

self.assertTrue(is_valid_password(“Password1_”))

def test_password_of_size_twenty(self):

self.assertTrue(is_valid_password(“Password12Password_$”))

def test_password_with_invalid_special_character_semicolon(self):

self.assertFalse(is_valid_password(“Password1_;”))

self.assertFalse(is_valid_password(“Password1;”))

def test_password_with_no_digit(self):

self.assertFalse(is_valid_password(“Password_”))

def test_password_with_no_lowercase(self):

self.assertFalse(is_valid_password(“PASSWORD1_”))

def test_password_with_no_uppercase(self):

self.assertFalse(is_valid_password(“password1_”))

def test_password_without_valid_special_character(self):

self.assertFalse(is_valid_password(“Password1”))

def test_valid_password(self):
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進入阿里一直到現(xiàn)在。

深知大多數(shù)Python工程師,想要提升技能,往往是自己摸索成長或者是報班學習,但對于培訓機構(gòu)動則幾千的學費,著實壓力不小。自己不成體系的自學效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!

因此收集整理了一份《2024年P(guān)ython開發(fā)全套學習資料》,初衷也很簡單,就是希望能夠幫助到想自學提升又不知道該從何學起的朋友,同時減輕大家的負擔。

Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1),程序員,python,單元測試,log4j

Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1),程序員,python,單元測試,log4j

Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1),程序員,python,單元測試,log4j

Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1),程序員,python,單元測試,log4j

Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1),程序員,python,單元測試,log4j

Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1),程序員,python,單元測試,log4j

既有適合小白學習的零基礎資料,也有適合3年以上經(jīng)驗的小伙伴深入學習提升的進階課程,基本涵蓋了95%以上前端開發(fā)知識點,真正體系化!

由于文件比較大,這里只是將部分目錄大綱截圖出來,每個節(jié)點里面都包含大廠面經(jīng)、學習筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且后續(xù)會持續(xù)更新

如果你覺得這些內(nèi)容對你有幫助,可以掃碼獲?。。。。▊渥ython)文章來源地址http://www.zghlxwxcb.cn/news/detail-856575.html

-XVjOI2DA-1712508915378)]

Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1),程序員,python,單元測試,log4j

Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1),程序員,python,單元測試,log4j

Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1),程序員,python,單元測試,log4j

Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1),程序員,python,單元測試,log4j

既有適合小白學習的零基礎資料,也有適合3年以上經(jīng)驗的小伙伴深入學習提升的進階課程,基本涵蓋了95%以上前端開發(fā)知識點,真正體系化!

由于文件比較大,這里只是將部分目錄大綱截圖出來,每個節(jié)點里面都包含大廠面經(jīng)、學習筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且后續(xù)會持續(xù)更新

如果你覺得這些內(nèi)容對你有幫助,可以掃碼獲?。。。。▊渥ython)

Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1),程序員,python,單元測試,log4j

到了這里,關(guān)于Python中的自定義密碼驗證,對密碼驗證功能進行單元測試(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • java中的自定義異常處理機制

    在日常開發(fā)中我們難免會遇到各種各樣的異常問題的發(fā)生,但是任何異常如果都在異??赡軙霈F(xiàn)的地方直接去處理會讓業(yè)務邏輯顯得很臃腫,代碼看上去很冗余。在開發(fā)Web應用程序時,異常處理是一項非常重要的任務。異常處理可以提高程序的健壯性和穩(wěn)定性。Java后端開發(fā)

    2024年02月08日
    瀏覽(20)
  • Flink中的自定義參數(shù)與模型配置

    Flink中的自定義參數(shù)與模型配置

    作者:禪與計算機程序設計藝術(shù) https://nightlies.apache.org/flink/flink-docs-master/docs/concepts/flink-architecture/ Apache Flink 是一個框架和分布式處理引擎,用于在無邊界和有邊界數(shù)據(jù)流上進行有狀態(tài)的計算。Flink 能在所有常見集群環(huán)境中運行,并能以內(nèi)存速度和任意規(guī)模進行計算。 在企業(yè)

    2024年02月10日
    瀏覽(32)
  • Webhook端口中的自定義簽名身份認證

    Webhook端口中的自定義簽名身份認證

    概述 如果需要通過 Webhook 端口從交易伙伴處接收數(shù)據(jù),但該交易伙伴可能對于安全性有著較高的要求,而不僅僅是用于驗證入站 Webhook 要求的基本身份驗證用戶名/密碼,或者用戶可能只想在入站 Webhook 消息上增加額外的安全層。 使用 Webhook 端口的自定義響應功能,用戶實際

    2024年01月20日
    瀏覽(19)
  • vue3使用el-form實現(xiàn)登錄、注冊功能,且進行表單驗證(Element Plus中的el-form)

    vue3使用el-form實現(xiàn)登錄、注冊功能,且進行表單驗證(Element Plus中的el-form)

    簡介:Element Plus 中的 el-form 是一個表單組件,用于快速構(gòu)建表單并進行數(shù)據(jù)校驗。它提供了豐富的表單元素和驗證規(guī)則,使表單開發(fā)變得更加簡單和高效??梢源钆鋏l-dialog實現(xiàn)當前頁面的登錄、注冊頁 ,這兩天在vue3中用到了表單登錄,特意記錄一下,這里沒有封裝,直接使

    2024年02月07日
    瀏覽(130)
  • 微信小程序入門學習02-TDesign中的自定義組件

    微信小程序入門學習02-TDesign中的自定義組件

    我們上一篇講解了TDesign模板的基本用法,如何開始閱讀模板。本篇我們講解一下自定義組件的用法。 官方模板在頂部除了顯示圖片外,還顯示了一段文字介紹。文字是嵌套在容器組件里,先按照他的寫法復制代碼到我們自己創(chuàng)建的index.wxml文件里 因為我們的布局是從上到下,

    2024年02月10日
    瀏覽(22)
  • wangEditor5在Vue3中的自定義圖片+視頻+音頻菜單

    wangEditor5在Vue3中的自定義圖片+視頻+音頻菜單

    本文適用于wangEditor5用在Vue3中自定義擴展音頻、視頻、圖片菜單;并擴展音頻元素節(jié)點,保證音頻節(jié)點的插入、讀取、回寫功能正常;支持動態(tài)修改尺寸。適用于初學者。 ButtonMenu:自定義擴展新功能 | wangEditor ModalMenu:自定義擴展新功能 | wangEditor 注冊菜單到wangEditor:定義新

    2024年02月06日
    瀏覽(32)
  • VBA中類的解讀及應用第八講:實現(xiàn)定時器功能的自定義類事件

    VBA中類的解讀及應用第八講:實現(xiàn)定時器功能的自定義類事件

    《VBA中類的解讀及應用》教程【10165646】是我推出的第五套教程,目前已經(jīng)是第一版修訂了。這套教程定位于最高級,是學完初級,中級后的教程。 類,是非常抽象的,更具研究的價值。隨著我們學習、應用VBA的深入,有必要理解這些抽象的理論知識。對象,類,過程,方法

    2024年02月02日
    瀏覽(23)
  • python的自定義函數(shù)的用法和實例

    python的自定義函數(shù)的用法和實例

    目錄 1.自定義函數(shù)的語法和用法 (1)引入 (2)語法 (3)用法:用于自定義目標函數(shù)語法。 (4)調(diào)用函數(shù) ①語法 ②解釋 2.實例 (1)簡單的用法 (2)與input函數(shù)、while語句結(jié)合使用 python語言調(diào)用的求和sum()、replace等函數(shù)是已經(jīng)定義好的函數(shù),而我們想要調(diào)用自己想要的函

    2024年02月08日
    瀏覽(17)
  • Python 程序設計入門(023)—— Python 的自定義函數(shù)

    在 Python 中,函數(shù)的應用非常廣泛。比如:input()、print()、str()、range()、len() 等,這些稱為 Python 的內(nèi)置函數(shù),可以直接使用。Python 支持自定義函數(shù),即將一段有規(guī)律的、可重復使用的代碼定義為函數(shù),達到一次編寫,多次使用的目的。 自定義函數(shù)使用 def 實現(xiàn),語法格

    2024年02月12日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包