From 04c4064c68a04954c541bf122bcd913fd23ff2da Mon Sep 17 00:00:00 2001 From: 03 <1930154319@qq.com> Date: Mon, 18 Mar 2024 13:21:46 +0800 Subject: [PATCH 1/5] Fix bug 553 --- app/templates/mainpage_post.html | 2 +- app/wordfreqCMD.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/templates/mainpage_post.html b/app/templates/mainpage_post.html index 7357457..5df7dd5 100644 --- a/app/templates/mainpage_post.html +++ b/app/templates/mainpage_post.html @@ -2,7 +2,7 @@ - Title + 单词词频 {{ yml['header'] | safe }} {% if yml['css']['item'] %} diff --git a/app/wordfreqCMD.py b/app/wordfreqCMD.py index dcee74e..dfdde2e 100644 --- a/app/wordfreqCMD.py +++ b/app/wordfreqCMD.py @@ -4,6 +4,7 @@ ########################################################################### import collections +import html import string import operator import os, sys # 引入模块sys,因为我要用里面的sys.argv列表中的信息来读取命令行参数。 @@ -39,7 +40,8 @@ def file2str(fname):#文件转字符 def remove_punctuation(s): # 这里是s是形参 (parameter)。函数被调用时才给s赋值。 - special_characters = '\_©~<=>+/[]*&$%^@.,?!:;#()"“”—‘’{}|' # 把里面的字符都去掉 + special_characters = '\_©~<=>+/[]*&$%^@.,?!:;#()"“”—‘’{}|,。?!¥……()、《》:;·' # 把里面的字符都去掉 + s = html.unescape(s) for c in special_characters: s = s.replace(c, ' ') # 防止出现把 apple,apple 移掉逗号后变成 appleapple 情况 s = s.replace('--', ' ') From b8f2919959e1a31979df4476a188517896870e26 Mon Sep 17 00:00:00 2001 From: 03 <1930154319@qq.com> Date: Mon, 25 Mar 2024 10:15:11 +0800 Subject: [PATCH 2/5] Fix bug 553 --- app/wordfreqCMD.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/wordfreqCMD.py b/app/wordfreqCMD.py index dfdde2e..4cf550e 100644 --- a/app/wordfreqCMD.py +++ b/app/wordfreqCMD.py @@ -41,7 +41,7 @@ def file2str(fname):#文件转字符 def remove_punctuation(s): # 这里是s是形参 (parameter)。函数被调用时才给s赋值。 special_characters = '\_©~<=>+/[]*&$%^@.,?!:;#()"“”—‘’{}|,。?!¥……()、《》:;·' # 把里面的字符都去掉 - s = html.unescape(s) + s = html.unescape(s) # 将HTML实体转换为对应的字符,比如<会被识别为小于号 for c in special_characters: s = s.replace(c, ' ') # 防止出现把 apple,apple 移掉逗号后变成 appleapple 情况 s = s.replace('--', ' ') From b7fe68c54d6bfc297cfc2d99bb367c14e147883b Mon Sep 17 00:00:00 2001 From: 03 <1930154319@qq.com> Date: Mon, 8 Apr 2024 16:37:15 +0800 Subject: [PATCH 3/5] test_bug553 --- app/test/test_bug553_LinShan.py | 81 +++++++++++++++++++++++++++++++++ app/test/test_file.json | 30 ++++++++++++ app/wordfreqCMD.py | 2 +- 3 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 app/test/test_bug553_LinShan.py create mode 100644 app/test/test_file.json diff --git a/app/test/test_bug553_LinShan.py b/app/test/test_bug553_LinShan.py new file mode 100644 index 0000000..8ba25f1 --- /dev/null +++ b/app/test/test_bug553_LinShan.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +# Run the docker image using the following command: +# docker run -d -p 4444:4444 selenium/standalone-chrome +from selenium import webdriver +from selenium.webdriver.common.desired_capabilities import DesiredCapabilities +from selenium.webdriver.support import expected_conditions as EC +from selenium import webdriver +from selenium.webdriver.support.wait import WebDriverWait +from selenium.webdriver.common.by import By +from webdriver_manager.chrome import ChromeDriverManager +from selenium.webdriver.common.keys import Keys +import logging +import json +import os +import time + +# driver = webdriver.Remote('http://localhost:4444/wd/hub', DesiredCapabilities.FIREFOX) +# HOME_PAGE = 'http://121.4.94.30:91/' + + +# 我使用的是Chrome浏览器,所以我又通过安装webdriver-manager插件来配置浏览器的驱动 +# 我通过 'pip install webdriver-manager==4.00' 命令安装webdriver-manager,并且设置其版本为4.00 +driver = webdriver.Chrome(ChromeDriverManager().install()) +HOME_PAGE = 'http://127.0.0.1:5000/' +driver.implicitly_wait(10) + + +# 加载存有测试数据的json文件 +def load_json_file(file_path): + # 获取当前所在文件的目录 + dir_path = os.path.dirname(os.path.abspath(__file__)) + # 将目录路径和文件名进行拼接,获取最终的文件路径 + file_path = dir_path+"\\"+file_path + # 加载文件 + with open(file_path,encoding='utf-8') as f: + data = json.load(f) + return data + + +def test_bug553_LinShan(): + try: + # 打开对应地址的网页 + driver.get(HOME_PAGE) + + # 浏览器最大窗口化 + driver.maximize_window() + + # 判断网页源代码中是否有English Pal -文字 + assert 'English Pal -' in driver.page_source + + # 获取json格式的测试数据 + words = load_json_file("test_file.json") + + # 遍历测试的数据 + for word in words: + # 将测试的数据输入到主页的textarea里 + driver.find_element_by_xpath("//textarea[@name='content']").send_keys(Keys.CONTROL, "a") + driver.find_element_by_xpath("//textarea[@name='content']").send_keys(word['key']) + time.sleep(2) + + # 点击按钮获取单词 + driver.find_element_by_xpath("//input[@value='get文章中的词频']").click() + time.sleep(2) + + # 获取筛选后的单词 + get_words = driver.find_elements_by_xpath("//p/a") + + # 遍历获取到的单词,并判断单词与预期的相同 + for w in get_words: + # 判断单词是否在预期结果中 + assert w.text in word['value'] + + # 返回上一页网页 + driver.find_element_by_xpath("//input[@value='确定并返回']").click() + time.sleep(2) + except Exception as e: + # 输出异常信息 + logging.error(e) + finally: + # 关闭浏览器 + driver.quit() \ No newline at end of file diff --git a/app/test/test_file.json b/app/test/test_file.json new file mode 100644 index 0000000..5bd2499 --- /dev/null +++ b/app/test/test_file.json @@ -0,0 +1,30 @@ +[ + { + "key":"‘test1’", + "value": ["test1"] + }, + { + "key":"'test2'", + "value": ["test2"] + }, + { + "key":"“test3”", + "value": ["test3"] + }, + { + "key":"it's", + "value": ["it's"] + }, + { + "key":"hello,I'm linshan", + "value": ["hello","i'm","linshan"] + }, + { + "key":"Happy New Year!?", + "value": ["happy","new","year"] + }, + { + "key":"My favorite book is 《Harry Potter》。", + "value":["potter","harry","my","favorite","book","is"] + } +] \ No newline at end of file diff --git a/app/wordfreqCMD.py b/app/wordfreqCMD.py index 4cf550e..feeafbd 100644 --- a/app/wordfreqCMD.py +++ b/app/wordfreqCMD.py @@ -106,7 +106,7 @@ if __name__ == '__main__': print('%s\t%d\t%s' % (x[0], x[1], youdao_link(x[0])))#函数导出 # 把频率的结果放result.html中 - make_html_page(sort_in_descending_order(L), 'result.html') + make_html_page(sort_in_descending_order(L), 'result.html') print('\nHistory:\n') if os.path.exists('frequency.p'): From 768c81828de6df2ac10f6be06ba0ffc4531c6516 Mon Sep 17 00:00:00 2001 From: 03 <1930154319@qq.com> Date: Tue, 16 Apr 2024 08:46:16 +0800 Subject: [PATCH 4/5] Fix Bug553 --- app/test/test_bug553_LinShan.py | 61 +++++++++++++-------------------- 1 file changed, 23 insertions(+), 38 deletions(-) diff --git a/app/test/test_bug553_LinShan.py b/app/test/test_bug553_LinShan.py index 8ba25f1..393e82d 100644 --- a/app/test/test_bug553_LinShan.py +++ b/app/test/test_bug553_LinShan.py @@ -10,9 +10,8 @@ from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.keys import Keys import logging -import json -import os import time +import pytest # driver = webdriver.Remote('http://localhost:4444/wd/hub', DesiredCapabilities.FIREFOX) # HOME_PAGE = 'http://121.4.94.30:91/' @@ -25,19 +24,9 @@ HOME_PAGE = 'http://127.0.0.1:5000/' driver.implicitly_wait(10) -# 加载存有测试数据的json文件 -def load_json_file(file_path): - # 获取当前所在文件的目录 - dir_path = os.path.dirname(os.path.abspath(__file__)) - # 将目录路径和文件名进行拼接,获取最终的文件路径 - file_path = dir_path+"\\"+file_path - # 加载文件 - with open(file_path,encoding='utf-8') as f: - data = json.load(f) - return data - - -def test_bug553_LinShan(): +@pytest.mark.parametrize("test_input",("‘test1’","'test2'","“test3”","it's","hello,I'm linshan","Happy New Year!?","My favorite book is 《Harry Potter》。")) +@pytest.mark.parametrize("expected",(["test1"],["test2"],["test3"],["it's"],["hello","i'm","linshan"],["happy","new","year"],["potter","harry","my","favorite","book","is"])) +def test_bug553_LinShan(test_input,expected): try: # 打开对应地址的网页 driver.get(HOME_PAGE) @@ -48,34 +37,30 @@ def test_bug553_LinShan(): # 判断网页源代码中是否有English Pal -文字 assert 'English Pal -' in driver.page_source - # 获取json格式的测试数据 - words = load_json_file("test_file.json") + # 将测试的数据输入到主页的textarea里 + driver.find_element_by_xpath("//textarea[@name='content']").send_keys(Keys.CONTROL, "a") + driver.find_element_by_xpath("//textarea[@name='content']").send_keys(test_input) + time.sleep(2) - # 遍历测试的数据 + # 点击按钮获取单词 + driver.find_element_by_xpath("//input[@value='get文章中的词频']").click() + time.sleep(2) + + # 获取筛选后的单词 + words = driver.find_elements_by_xpath("//p/a") + + # 遍历获取到的单词,并判断单词与预期的相同 for word in words: - # 将测试的数据输入到主页的textarea里 - driver.find_element_by_xpath("//textarea[@name='content']").send_keys(Keys.CONTROL, "a") - driver.find_element_by_xpath("//textarea[@name='content']").send_keys(word['key']) - time.sleep(2) - - # 点击按钮获取单词 - driver.find_element_by_xpath("//input[@value='get文章中的词频']").click() - time.sleep(2) - - # 获取筛选后的单词 - get_words = driver.find_elements_by_xpath("//p/a") - - # 遍历获取到的单词,并判断单词与预期的相同 - for w in get_words: - # 判断单词是否在预期结果中 - assert w.text in word['value'] + # 判断单词是否在预期结果中 + assert word.text in expected - # 返回上一页网页 - driver.find_element_by_xpath("//input[@value='确定并返回']").click() - time.sleep(2) + # 返回上一页网页 + driver.find_element_by_xpath("//input[@value='确定并返回']").click() + time.sleep(2) + except Exception as e: # 输出异常信息 logging.error(e) - finally: # 关闭浏览器 + finally: driver.quit() \ No newline at end of file From 4ea6d9aeed2154057eb16c6ea36cb60b9272e638 Mon Sep 17 00:00:00 2001 From: 03 <1930154319@qq.com> Date: Tue, 16 Apr 2024 08:48:55 +0800 Subject: [PATCH 5/5] Fix Bug553 --- app/test/test_file.json | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 app/test/test_file.json diff --git a/app/test/test_file.json b/app/test/test_file.json deleted file mode 100644 index 5bd2499..0000000 --- a/app/test/test_file.json +++ /dev/null @@ -1,30 +0,0 @@ -[ - { - "key":"‘test1’", - "value": ["test1"] - }, - { - "key":"'test2'", - "value": ["test2"] - }, - { - "key":"“test3”", - "value": ["test3"] - }, - { - "key":"it's", - "value": ["it's"] - }, - { - "key":"hello,I'm linshan", - "value": ["hello","i'm","linshan"] - }, - { - "key":"Happy New Year!?", - "value": ["happy","new","year"] - }, - { - "key":"My favorite book is 《Harry Potter》。", - "value":["potter","harry","my","favorite","book","is"] - } -] \ No newline at end of file