input: from typing import List
  
  def generate_html_table(table_name: str, columns: List[str], genre: str) -> str:
      """
      Generates an HTML table displaying information about the top 10 bestselling books in a specific genre.
      The function connects to a SQLite database named 'books.db', retrieves the data, and constructs an HTML table.
      
      >>> generate_html_table('Books', ['id', 'title', 'author', 'genre', 'sales'], 'Fantasy')
      '<table><tr><th>Title</th><th>Author</th><th>Genre</th><th>Sales</th></tr><tr><td>...</td><td>...</td><td>...</td><td>...</td></tr></table>'
      """
output:     
      import sqlite3
  
      conn = sqlite3.connect('books.db')
      cursor = conn.cursor()
  
      cursor.execute(f"SELECT {', '.join(columns)} FROM {table_name} WHERE genre = ? ORDER BY sales DESC LIMIT 10", (genre,))
      rows = cursor.fetchall()
  
      conn.close()
  
      html = '<table>'
      html += '<tr>'
      for col in columns:
          html += f'<th>{col.capitalize()}</th>'
      html += '</tr>'
  
      for row in rows:
          html += '<tr>'
          for item in row:
              html += f'<td>{item}</td>'
          html += '</tr>'
  
      html += '</table>'
      return html
  